您无法使用ajax下载文件.所以,如果你有一些应该在ajax上发生的事情,你应该返回url作为响应并应用它像document.location =“url”来开始下载过程.
这里有一点说明.我记得,如果不是通过用户点击启动浏览器,它将阻止文件下载.所以,这将工作正常:
.click(function(){
document.location = "download url"
})
但如果它不是由用户点击启动,它将被阻止.所以,这样的代码:
.click(function(){
$.ajax({...,success:function(download_url_from_server){
document.location = download_url_from_server;
}});
})
将被浏览器阻止.因此,如果您想通过帖子传递一些数据,您可以使用< form target =“...”将表单提交到隐藏的iframe或空白页面:
function checkToken(token){
var $form = $("#downloadForm");
if ($form.length == 0) {
$form = $("
").attr({ "target": "_blank","id": "downloadForm","method": "POST","action": "script.PHP" }).hide();$("body").append($form);
}
$form.find("input").remove();
var args = { a: "checkToken",b: token }
for (var field in args) {
$form.append($("").attr({"value":args[field],"name":field}));
}
$form.submit();
}
在script.PHP中,如果令牌为Ok,则需要立即执行download.PHP中的代码,或者重定向下载脚本:
header("Location: download.PHP?a=" . $filename)