0

我有一个 ajax 调用,它成功调用了一个本身可以正常工作的页面。您单击按钮,然后下载 PDF。但是,当我使用相同的请求类型和 url 进行 AJAX 调用时,data会返回 ,但不会提示下载。

我的电话:

    $("#download-pdf").live('click', function(){
      $.ajax({
        url: $(this).parents('form').attr('action'),
        type: 'POST',
        success: function(data){
          console.log(data);
        }
      });
      return false;
    });

数据以未解析的 PDF 形式返回。所以我知道信息在那里。它只是不会导致下载。有什么技巧吗?

4

2 回答 2

4

强制下载的唯一方法是使用“标准”表单提交方法刷新页面。使用 Ajax,您将收到原始输出数据 (PDF),并且不会弹出保存对话框

于 2012-04-17T12:56:21.423 回答
3

使用 AJAX 时无法强制下载。

请阅读:使用 javascript/ajax/jquery 强制下载 pdf 链接

如果您只是提交表单,那么您可以通过发送适当的标题告诉浏览器下载文件:

Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=file.pdf");

Response.ContentType = "application/pdf";
Response.WriteFile(Server.MapPath(@"~/file.pdf"));

Response.End();
于 2012-04-17T12:57:02.920 回答