【问题标题】:HTTP response not triggering file download using jQuery Form pluginHTTP响应未使用jQuery Form插件触发文件下载
【发布时间】:2014-02-17 13:15:54
【问题描述】:

我正在尝试向客户端发送一个 csv 文件。据我所知,我正在设置正确的响应标头(它曾经可以工作),并且浏览器(Chrome、IE)得到了这个:

HTTP/1.1 200 OK
Cache-Control: private, s-maxage=0
Transfer-Encoding: chunked
Content-Type: text/csv; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
X-AspNetMvc-Version: 5.0
Content-Disposition: attachment; filename="Cameras_Camcorders_Photo_Frames_Binoculars_Telescope_Surveillance_Camera_Accessories_(10-29-2013).xlsm_140217.csv"
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcbGZlcnJhb1xEb2N1bWVudHNcVmlzdWFsIFN0dWRpbyAyMDEzXFByb2plY3RzXFRlbXBsZXhcdHJ1bmtcQ29uU29sLlRlbXBsZXguV2ViQWxwaGEzXEpvYlxSdW5cMTc1YWRlY2UtYzM2MC00ZjMxLWJkM2YtMjk3ZjNkYWMwNTQ2?=
X-Powered-By: ASP.NET
Date: Mon, 17 Feb 2014 13:02:05 GMT

触发文件下载的表单是 jQuery 表单。如果我不使用 jQuery 表单,则下载正常,如果我使用 jQuery 表单,则没有任何反应。

【问题讨论】:

  • 你在做什么来触发 HTTP 请求?点击链接?提交表格?使用 XMLHttpRequest?还有什么?
  • 我正在使用 jQuery 表单,我编辑了我的问题以缩小其范围,因为我刚刚注意到没有 jQuery 表单下载确实会发生

标签: html forms http http-headers jquery-forms-plugin


【解决方案1】:

来自您的 cmets:

我正在使用 jQuery 表单

来自 jQuery 表单主页:

jQuery 表单插件允许您轻松且不显眼地升级 HTML 表单以使用 AJAX

如果您使用 Ajax 处理响应,那么您完全绕过了处理 HTTP 响应的正常浏览器机制(它决定是否应该呈现或保存)。它改为使用 JavaScript。

如果您希望 Content-Disposition 触发响应的保存操作,则需要使用常规表单提交而不是 Ajax。

【讨论】:

  • 但是我正在拦截成功回调的响应,我不能用它来触发文件下载吗?还是简单地设置正确的 jQuery Form 目标选项?
  • 您可以使用 JavaScript 以 data: URI 的形式表达响应正文,然后将其分配给 location
  • @LuisFerrao AJAX 的整个想法是能够修改当前页面的 HTML。你不希望这样,所以你根本不需要 AJAX。
  • 我需要它,因为我的表单内容是实时修改的,我想保持页面不变(没有回发)
猜你喜欢
  • 2011-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
相关资源
最近更新 更多