【问题标题】:Downloading Via JQuery AJAX Post not working通过 JQuery AJAX Post 下载不起作用
【发布时间】:2012-01-11 13:47:12
【问题描述】:

我想通过使用 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
    });
});

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

我哪里错了?

谢谢你..

【问题讨论】:

  • 我认为无法通过 AJAX 下载。为什么不将用户重定向到下载页面并让他正常下载文件?
  • 我认为不可能在 AJAX 请求中执行此操作。此外,这毫无意义,因为浏览器会将请求的标头识别为无法在浏览器中查看,并且无论如何都会弹出下载对话框。

标签: php jquery ajax download


【解决方案1】:

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

查看一些相关问题以获得更多解释和替代方案:

【讨论】:

  • @IbrahimAzharArmar:但是没有 AJAX请求。只需有一个动作为 App/Ajax/Excel/Download.php 的表单并通过 POST 提交(即您的 erp_customerinvoice 表单)。
猜你喜欢
  • 1970-01-01
  • 2016-06-03
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多