gpt4 book ai didi

php - 如何将 Javascript 对象传递给 php 以进行 sql 查询并将数据作为下载的 csv 文件返回?

转载 作者:行者123 更新时间:2023-11-30 17:59:14 24 4
gpt4 key购买 nike

步骤如下:

  1. 创建一个用户点击下载数据的链接

  2. javascript将查询参数发送给php

  3. php查询数据库并写入文件

  4. 客户端下载文件

但我无法执行第 4 步。

第 1 步:(这是一个表对象,还包含参数:

d3.select("#some-div").append('a")
.attr("href", "javascript: void(0)")
.on("click", function() { this.saveAsCSV() };

第 2 步:进行查询的 Javascript 文件:

var saveAsCSV = function(params) {
var tmp_params = $.extend({}, params);
tmp_params['State'] = "NM";
$.get('php/get_data.php', tmp_params);
}

php 返回查询:

...
header("Content-type: application/text-csv");
header("Content-Disposition: attachment; filename=query_result.csv");
while($row = $result->fetchArray() {
print "$row";
}
...

它工作正常,因为它可以正确查询并打印 javascript 函数中的数据(所以如果我将它添加到 get return 函数中,它会将它打印到 console.log),但我不知道我在做什么应该采取不同的方式使其直接下载。

我尝试过的一件事是对 params 对象执行以下操作:

var param_string = encodeURIComponent(JSON.stringify(params));
location.href = 'http://www.mysite.com"+param_string;

但这既会使用户离开页面又无法下载数据。

编辑:我应该澄清一下,php 文件确实以 csv 格式很好地输出了查询。问题似乎是无论 php header 如何,使用 $.get() 函数都不会触发下载。也许我只需要在 URL 地址中提供一个带有参数的简单链接,但我不确定如何将 javascript 对象转换为 URL 格式,以便 php 脚本可以解释它。

最佳答案

您可以使用您的 URL php/get_data.php?State=NM(可能是其他参数)打开弹出窗口/新窗口/标签/任何内容。它应该下载输出。

但是您的输出可能是错误的,因为您只是打印变量 $row,它是一个数组。如果您尝试以这种方式打印数组,它只会显示 Array

您需要正确输出您的行。不幸的是,我不太了解 CSV 结构,无法帮助您解决这个问题。

关于php - 如何将 Javascript 对象传递给 php 以进行 sql 查询并将数据作为下载的 csv 文件返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17437312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com