我试图弄清楚这是怎么可能的。
我希望用户能够点击一个链接,它会下载某个文件。该文件将在 Ajax 调用中确定(现在我只有一个硬编码值)。
这是我的情况:当调用 Ajax 时,为请求提供的链接是我的框架的一部分,它有一个前端控制器,并且 url 被重定向。因此,我不能只将链接发送到一个名为 download.php 的文件,而其中只有标头代码。它贯穿整个框架流程,最终到达处理 Ajax 调用的方法。
这是我的代码:
$('.jobApplicationDownload').click(function() {
var that = $(this);
$
.ajax({
type : "POST",
url : "myfw/businessHome/applications/downloadJobApplicationItem",
data : {
"ajaxFileType" : that.attr("data-ftype"), "ajaxApplicationId" : that.attr("data-did")
},
success : function(html) {
alert(html);
},
error : function(XMLHttpRequest,
textStatus, errorThrown) {
alert("ERROR");
}
});
});
这是PHP。请记住,这是在通过 Front Controller 和一堆其他方法之后。这绝不是 Ajax 调用之后的第一站。
function downloadJobApplicationItem() {
//download.php
//content type
$fileName = "/myfw/common/jobs/resumes/eZACKe_1359081853_Week Three Sprints & Hurdles Workout 24th - 28th of Sept (1).pdf";
header('Content-disposition: attachment; filename='.$fileName);
header('Content-type: application/pdf');
//read from server and write to buffer
readfile('/myfw/common/jobs/resumes/eZACKe_1359081853_Week Three Sprints & Hurdles Workout 24th - 28th of Sept (1).pdf');
echo $_POST['ajaxFileType']. " ". $_POST['ajaxApplicationId'];
}
编辑:哦,顺便说一句,结果是我正在回显的东西被警告,并且没有文件下载开始。