0

我正在尝试使用 ajax 请求下载 pdf,但该请求的响应忽略了我的“Content-Type:application/pdf”标头。

ajax 请求

return Superagent.post(url, data).use(this._addDefaults.bind(this));

symfony 响应

return new BinaryFileResponse($target);

解决方法

在新选项卡中打开并为该文件放置一个直接网址。

4

1 回答 1

1

我认为这类似于我过去遇到的问题。问题是浏览器默认不打开对 POST ajax 请求的响应。我最终求助于自动表单发布。在 HTML 中:

<form method="post" action="http://handler1.ashx" target="_blank">
  <input type="hidden" id="data" name="data" value="post_body_stuff"/>
  <button id="pdfsubmit" type="submit" value="Submit">Export to PDF</button>
</form>

您可以使用 javascript 将要发布的所有数据作为隐藏输入字段上的值而不是post_body_stuff. 这样,当内容返回时,浏览器将尝试将其打开或保存为文件,而不是将其作为响应文本读取。

于 2015-05-01T14:10:49.233 回答