我正在向客户端显示报告。我做了一个ajax调用,通过“传递”变量,即“显示”或“下载”。PHP:无法将CSV文件传输到客户端以响应AJAX调用
这里是Ajax调用:
$.ajax({
type: 'POST',
url: 'ajaxController.php',
dataType: 'json',
data: {
e: "getReport",
reportName: reportName,
delivery: delivery
},
success: function (data) {
if (delivery === 'display') {
$("#reportDisplayTableHeader").html('');
$("#reportDisplayTableBody").html('');
Lifestyle.selectedReportRows = data;
$.each(Lifestyle.selectedReportRows, function(key, row) {
rowHTML = '<tr>';
$.each(row, function(parameter, value) {
if (isHeader) {
rowHTML += '<td>' + parameter + '</td>';
} else {
rowHTML += '<td>' + value + '</td>';
}
});
rowHTML += '</tr>';
if (isHeader) {
$reportHead.append(rowHTML);
isHeader = false;
} else {
$reportTableBody.append(rowHTML);
}
});
$("#reportCaption").show();
}
}
});
这里是服务器端的PHP:
if ($delivery == 'display') {
echo json_encode($return);
} else if ($delivery == 'download') {
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header('Content-Description: File Transfer');
header("Pragma: no-cache");
header("Expires: 0");
echo "record1,record2,record3\n";
}
在“显示”的情况下,它会返回JSON只是罚款和客户端显示器一张桌子。
在“下载”的情况下,我希望它弹出一个下载对话框,它可以保存我回复给他们的CSV。
但是,发生的事情是通话正在完成,头文件/ csv正在穿线(谢谢Fiddler),但没有下载对话框出现,客户端也不知道我将csv推送给他们。
为了让下载对话框弹出,我需要做些什么?
谢谢。
看看http://stackoverflow.com/questions/4545311/download-a-file-by-jquery-ajax –
保存为一个文件,并返回该文件的网址到最终用户和重定向浏览器一旦返回 – cmorrissey
保存文件的问题是后来我必须做清理。更直接地推送文件内容。 – Lurk21