在IE JSON响应下载(7〜10)(Json response download in IE(7~

2019-07-05 19:07发布

我想上传一个文件,并返回有关文件的属性(名称,大小等)的JSON响应。 它在IE之外的所有浏览器工作正常。

IE尝试下载JSON作为一个文件!

我有IE10并从调试器改变浏览器模式和文档模式下测试它在IE7为10。

我使用asp.net mvc4,文件的上传动作有HttpPost属性,我使用返回返回JSON(myObject的)JSON响应;

这里是我的HTTP头

请求

Key Value
Request POST /File/UploadFile/ HTTP/1.1
Accept  text/html, application/xhtml+xml, */*
Referer http://localhost:63903/
Accept-Language en-NZ
User-Agent  Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Content-Type    multipart/form-data; boundary=---------------------------7dc1e71330526
Accept-Encoding gzip, deflate
Host    localhost:63903
Content-Length  1377002
DNT 1
Connection  Keep-Alive
Cache-Control   no-cache

响应

Key Value
Response    HTTP/1.1 200 OK
Server  ASP.NET Development Server/11.0.0.0
Date    Tue, 18 Dec 2012 23:44:19 GMT
X-AspNet-Version    4.0.30319
X-AspNetMvc-Version 4.0
Cache-Control   private
Content-Type    application/json; charset=utf-8
Content-Length  154
Connection  Close

我尝试了一些建议,但到目前为止,回到原点!

Answer 1:

您将需要返回JSON作为text/html ,因为IE不知道是做什么用application/json内容..

return Json(myObject, "text/html");

不知道,但它可能工作( 如果它确实会比较正确的 )使用text/x-json

return Json(myObject, "text/x-json");


Answer 2:

虽然这个问题是一个几个月大,我想我会添加更多的建议,以防其他人使用ASP.NET MVC 3 or 4 ,运行到这个问题。

根据我的经验,当IE尝试下载JSON响应的文件中的所有你需要做的,以纠正问题是添加一个参考jquery.unobtrusive到您的视图。

例如:

@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")

一旦到位IE将不再尝试下载从JsonResult控制器操作JSON响应。 无需改变响应类型等。



文章来源: Json response download in IE(7~10)