所以我有一个页面,用户将点击“导出”按钮,我想运行一个javascript函数并获取导出所需的数据,然后调用php脚本从我的数据库获取数据并强制下载。现在的问题是,我可以运行javascript,然后我将一个帖子调到我的脚本,但没有下载任何内容。我假设它是因为我实际上没有将窗口移动到php文件,我只是调用脚本。谁能帮助我?
javascript:ids是我需要传递以获取信息的数组。这是在用户点击“导出”按钮时调用的函数内部。
$.ajax({
type: "POST",
url: "exportLeads.php",
data: { 'idArray' : ids }
});
php:我使用了这个Export to CSV via PHP quetsion。该功能正确实现,我没有错误。没有提示下载的文件。
$data = mysql_query($query) or die($query.mysql_error());
$results = array();
while($line = mysql_fetch_array($data, MYSQL_ASSOC)){
$results[] = $line;
}
download_send_headers("data_export_" . date("Y-m-d") . ".csv");
echo array2csv($results);
die();
答案 0 :(得分:1)
没有时间编写代码,但简单来说,您需要:
答案 1 :(得分:1)
您无法使用ajax下载文件。您可以使用window.location.href
将用户重定向到文件位置,但无论如何,我建议您阅读此内容,有人会为您提供更好的答案:)
Download a file by jQuery.Ajax
或者你也可以使用这样的东西 在你的JavaScript中
$.post( "exportLeads.php", { 'idArray' : ids }, function( response ) {
if ( response.error === 0 ) {
window.location.href = response.location;
}
}, "json" );
并在你的php文件中
<?php
if ( $has_error ) {
echo json_encode( array( "error" => 1 ) );
}
else {
echo json_encode( array(
"error" => 0,
"location" => "link_to_file"
) );
}
?>
答案 2 :(得分:0)
您可以在成功函数中找到window.location.href:
$.ajax({
type: "POST",
dataType: "json",
url: "exportLeads.php",
data: { 'idArray' : ids },
success: function(data) {
if (data.success) window.location.href = "/link-to-your-download-script";
}
});
您必须更改对json_encode的响应,并将功能拆分为两个脚本,一个用于导出,另一个用于下载脚本(具有唯一ID或某个)。