28 votes

Téléchargement de la réponse Json dans IE (7 ~ 10)

Je suis en train de télécharger un fichier et de retourner une réponse json concernant les propriétés(nom, taille, etc) du fichier. Il fonctionne très bien dans tous les navigateurs sauf IE.

IE tente de télécharger le JSON sous la forme d'un fichier !

J'ai IE10 et de le tester sur IE7 à 10 en changeant de navigateur mode et le mode de document à partir du débogueur.

Je suis à l'aide de asp.net mvc4, l'upload d'un fichier d'action ont HttpPost attribut et je suis de retour réponse json à l'aide de retour Json(monobjet);

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 jusqu'à présent de retour à la case départ !

41voto

Gaby aka G. Petrioli Points 85891

Vous devrez renvoyer le json en tant que text/html car IE ne sait pas quoi faire avec le contenu application/json .

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

Pas sûr mais cela pourrait fonctionner ( et ce serait plus correct si c'est le cas ) d'utiliser text/x-json

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

3voto

Jack Points 937

Même si cette question est une question de quelques mois, je pense que je vais ajouter une suggestion, juste au cas où quelqu'un d'autre est à l'aide de ASP.NET MVC 3 or 4 et se heurte à ce problème.

Dans mon expérience, quand IE tente de télécharger la réponse Json dans un fichier tout ce que vous avez à faire pour corriger le problème consiste à ajouter un renvoi à l' jquery.unobtrusive de votre point de vue.

par exemple:

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

Une fois en place, IE ne plus essayer de télécharger la réponse json à partir d'un JsonResult d'action du contrôleur. Pas besoin de changer le type de réponse etc..

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X