quien - Descarga de respuesta Json en IE(7 ~ 10)
si pierde españa contra rusia (2)
Aunque esta pregunta tiene algunos meses, pensé en agregar una sugerencia más, por si alguien más está usando ASP.NET MVC 3 or 4
y se encuentra con este problema.
En mi experiencia, cuando IE intenta descargar la respuesta Json como un archivo, todo lo que tiene que hacer para corregir el problema es agregar una referencia a jquery.unobtrusive
a su vista.
por ejemplo:
@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")
Una vez que esto esté en su lugar, IE ya no intentará descargar la respuesta json de una acción del controlador JsonResult. No es necesario cambiar el tipo de respuesta, etc.
Estoy intentando subir un archivo y devolver una respuesta JSON con respecto a las propiedades (nombre, tamaño, etc.) del archivo. Funciona bien en todos los navegadores excepto en IE.
¡IE intenta descargar el JSON como un archivo!
Tengo IE10 y lo pruebo en IE7 a 10 cambiando el modo de navegador y el modo de documento del depurador.
Estoy usando asp.net mvc4, la acción de carga de archivos tiene el atributo HttpPost y estoy devolviendo la respuesta json usando return Json (myObject);
Y aquí están mis encabezados http
Solicitud
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
Respuesta
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
Probé algunas sugerencias, pero ¡hasta ahora volvemos al punto uno!
Tendrá que devolver el json como text/html
ya que IE no sabe qué hacer con los contenidos de la application/json
.
return Json(myObject, "text/html");
No estoy seguro, pero podría funcionar ( y sería más correcto si lo hace ) usar text/x-json
return Json(myObject, "text/x-json");