2012-12-18 45 views
31

我想上傳一個文件並返回關於該文件的屬性(名稱,大小等)的JSON響應。它在除IE以外的所有瀏覽器中都能正常工作。在IE瀏覽器(7〜10)Json響應下載

IE嘗試下載JSON作爲文件!

我有IE10並通過從調試器更改瀏覽器模式和文檔模式在IE7上測試它到10。

我使用的是asp.net mvc4,文件上傳操作具有HttpPost屬性,我返回json響應使用返回Json(myObject);

這裏是我的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 

我嘗試了一些建議,但到目前爲止,回到原點!

+0

那麼......問題是什麼? –

+0

我的不好... IE嘗試下載json作爲文件 – smehnawal

+1

[IE提示打開或保存json服務器結果]可能的重複(http://stackoverflow.com/questions/6114360/ie-prompts-to-open -or-save-json-result-from-server) –

回答

44

您將需要返回JSON作爲text/html因爲IE不知道如何處理application/json內容做..

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

不知道,但它可能工作(,這將是更正確如果它)使用text/x-json

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

而你先生剛剛救了我的一天......我們可以殺掉IE多久...... – smehnawal

+7

正確/最安全的內容類型實際上是「文本/純文本」。如果您使用text/html並將HTML作爲您的一個JSON屬性的值返回,那麼IE8和更早版本往往會對響應內容做些奇怪的事情。 –

+0

@ RayNicholus,這很有道理...... –

3

即使這個問題是一個幾個月大,我想我會再添加一條建議,以防其他人使用ASP.NET MVC 3 or 4並遇到此問題。

根據我的經驗,當IE嘗試下載Json響應作爲文件時,所有您必須要解決的問題是爲您的視圖添加對jquery.unobtrusive的引用。

例如:

一旦到位IE將不再嘗試下載從JsonResult控制器操作JSON響應。無需更改響應類型等。

+0

我已經將這個文件包含到我的html頁面中,但IE仍然嘗試下載json響應。任何幫助?我有webApi 2.0 – Simon

相關問題