通过JQuery AJAX Post下载无法正常工作

时间:2011-12-02 14:33:44

标签: php jquery ajax download

我想使用jQuery通过post请求使用ajax下载文件。

这是我正在使用的PHP代码。

if (file_exists($file)) {
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Disposition: attachment; filename=$file");
    header("Content-Type: application/zip");
    header("Content-Transfer-Encoding: binary");
    readfile($file);
}

这是jQuery。

$('button.erp_ci_download').click(function(){
    var formData = $('form#erp_customerinvoice').serialize();
    $.ajax({
        type: 'POST',
        url:  "App/Ajax/Excel/Download.php",
        data: formData
    });
});

是不是可以这样下载?我尝试使用谷歌搜索,一些人建议它与我这样做的方式相同。但在我的控制台中,它显示了一些垃圾值作为响应。

我哪里错了?

谢谢..

1 个答案:

答案 0 :(得分:4)

您可以使用您希望的表单数据向您的App/Ajax/Excel/Download.php页面发送POST请求,并忘记使用jQuery的AJAX。如果您的响应标头正确无误,那么当您发布“erp_customerinvoice”表单时,默认情况下,浏览器会显示一个下载文件对话框,您将永远不会导航到Download.php页面,因为响应标头会阻止重定向。 / p>

有关更多解释和替代方案,请参阅一些相关问题: