HTTP响应不使用jQuery Form插件触发文件下载

时间:2014-02-17 13:15:54

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

我正在尝试将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表单,没有任何反应。

1 个答案:

答案 0 :(得分:1)

来自您的评论:

  

我正在使用jQuery Form

从jQuery表单主页:

  

jQuery Form Plugin允许您轻松且不引人注意地升级HTML表单以使用AJAX

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

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