2012-12-18 19 views
31

Dosyanın özelliklerini (adı, boyutu vb.) Ile ilgili bir dosya yüklemeye ve json yanıtı vermeye çalışıyorum. IE dışındaki tüm tarayıcılarda iyi çalışır.IE'de Json yanıtı indir (7 ~ 10)

IE, JSON dosyasını bir dosya olarak indirmeye çalışır!

IE10'um var ve tarayıcı modunu ve belge modunu hata ayıklayıcıdan değiştirerek IE7'de 10'a kadar test ediyorum.

Asp.net mvc4 kullanıyorum, dosya yükleme eylemi HttpPost özelliğine sahip ve ben dönüş Json (myObject) kullanarak json yanıtını döndürüyorum;

Ve işte benim http başlıkları

talep

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 

Tepki

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 

Ben birkaç öneri çalıştı ama bugüne dek silbaştan!

+0

Peki ... sorun nedir? –

+0

benim kötü ... IE bir dosya olarak json indirmek için çalışır – smehnawal

+1

olası [kopyalarını sunucudan json sonucu açmak veya kaydetmek için IE istemi] (http://stackoverflow.com/questions/6114360/ie-prompts-to-open -ve-save-json-sonucu-sunucu-sunucu) –

cevap

44
Sen IE application/json içeriği ile ne yapacağını bilmiyor çünkü text/html olarak json dönmek gerekir

..

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

emin ama (işe yarayabilecek ve daha doğru olacaktır Değil o yaparsa) bu soruyu birkaç aylık olmasına rağmen text/x-json

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

Ve sen sadece günümü kurtardı ... ne zaman biz IE öldürebilir önce ... – smehnawal

+7

Doğru/en güvenli içerik türü aslında "metin/düz" dir. Metin/html kullanır ve HTML'yi JSON özelliklerinden birinin değeri olarak döndürürseniz, IE8 ve daha önceleri yanıt içeriğine tuhaf şeyler yapma eğilimindedir. –

+0

@RayNicholus, bu mantıklı ... –

3

kullanmak, diye düşündüm Bir başkası ASP.NET MVC 3 or 4 kullanıyorsa ve bu problemle karşılaşırsa bir öneri daha ekleyeceğim.

Benim deneyimime göre, IE Json yanıtını bir dosya olarak indirmeye çalıştığında, sorunu düzeltmek için yapmanız gereken tek şey, jquery.unobtrusive görünümüne bir başvuru eklemektir. örneğin

: Bu kez

artık JsonResult denetleyicisi eylemden json tepkisini indirmek için çalışacağız yer IE içindedir. Cevap türünü değiştirmeye gerek yok ..

+0

Bu dosyayı html sayfama ekledim, ancak IE hala json yanıtını indirmeye çalışıyor. Herhangi bir yardım? WebApi 2.0'ım var – Simon