2012-12-18 1 views
31

J'essaye de télécharger un dossier et renvoyer une réponse de JSON concernant des propriétés (nom, taille etc.) du dossier. Cela fonctionne très bien dans tous les navigateurs sauf IE.Json réponse téléchargement dans IE (7 ~ 10)

IE essaie de télécharger le JSON en tant que fichier!

J'ai IE10 et le tester sur IE7 à 10 en changeant le mode navigateur et le mode document du débogueur. J'utilise asp.net mvc4, l'action de téléchargement de fichier a l'attribut HttpPost et je renvoie la réponse json en utilisant return Json (myObject);

Et voici mes en-têtes http

Demande

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 

Réponse

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 

J'ai essayé quelques suggestions, mais si loin à la case départ!

+0

Alors ... quel est le problème? –

+0

mon mauvais ... IE essaie de télécharger json comme un fichier – smehnawal

+1

duplication possible de [IE invite à ouvrir ou enregistrer le résultat json du serveur] (http://stackoverflow.com/questions/6114360/ie-prompts-to-open -ou-save-json-resultat-du-serveur) –

Répondre

44

Vous devrez retourner le JSON comme text/html depuis IE ne sait pas quoi faire avec application/json contenu ..

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

Je ne sais pas, mais il pourrait fonctionner (et il serait plus correct si elle ne) à utiliser text/x-json

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

Et vous monsieur juste sauvé ma journée ... combien de temps avant que nous puissions tuer IE ... – smehnawal

+7

Le type de contenu correct/plus sûr est réellement "texte/plaine". Si vous utilisez text/html et renvoyez du HTML en tant que valeur de l'une de vos propriétés JSON, IE8 et les versions antérieures ont tendance à faire des choses étranges au contenu de la réponse. –

+0

@RayNicholus, cela a du sens ... –

3

Même si cette question est quelques mois, je pensais Je vais ajouter une suggestion supplémentaire, juste au cas où quelqu'un d'autre utilise ASP.NET MVC 3 or 4 et se heurte à ce problème. Dans notre expérience, quand IE tente de télécharger la réponse JSON comme un fichier tout ce que vous avez à faire pour corriger le problème est d'ajouter une référence à jquery.unobtrusive à votre vue.

par exemple:

Une fois que cela est en place IE ne tentera plus de télécharger la réponse JSON d'une action du contrôleur JsonResult. Pas besoin de changer le type de réponse, etc.

+0

J'ai inclus ce fichier dans ma page html, mais IE essaie toujours de télécharger la réponse json. De l'aide? J'ai webApi 2.0 – Simon