2011-11-30 49 views
34

Recibo el siguiente error en IE 9 SCRIPT5009: 'JSON' is undefined solo cuando estoy en modo de compatibilidad. la línea causando este error esSCRIPT5009: 'JSON' no está definido

JSON.stringify(togObj.Answers) 

El error no se produce en el IE (modo de no compatibilidad), Chrome o Firefox. ¿Alguna idea de lo que está pasando aquí?

+3

Parece que el objeto 'JSON' no está definido. Eche un vistazo a http://json.org/js.html para agregar soporte JSON. –

+0

¡Gracias a todos, fue fácil! –

Respuesta

23

JSON es not available in compatibility mode IE:

No se admite en los modos siguientes documentos: peculiaridades, Internet Explorer 6 estándares, Internet Explorer 7 estándares.

Dado que no debería estar utilizando (o peor, gobernando) los modos de compatibilidad en primer lugar, debe cambiar IE a modo estándar mediante la adición de un doctype válido.

+1

Accidentalmente activé el modo de compatibilidad y obtuve el error. +1 por guiarme. – vbocan

+0

Tenga en cuenta que IE iframes "hereda" el modo de documento del marco principal. Entonces, si es posible que necesite la versión de JSON más allá de IE7, es posible que se incruste en páginas que no controla. – cmc

-1

Si está utilizando la biblioteca jQuery en su página, entonces podría usar $.parseJSON.

+0

no funciona, porque jQuery usa JSON.parse –

+0

@FilipCornelissen: http://api.jquery.com/jQuery.parseJSON/ Requiere 1.4.1 versión de jquery. Además, verifique que su json es correcto. Intente pasar una cadena demo json a esta función y verifique. – iMatoria

+0

desde esa misma página: "Cuando el navegador proporciona una implementación nativa de JSON.parse, jQuery lo usa para analizar la cadena". y (simplificado) desde http://code.jquery.com/jquery-latest.js: 'parseJSON: function (data) {return window.JSON.parse (data); } '. Conclusión, no funciona de forma nativa en IE8 o inferior. –

0

Usted que incluir json2.js

ver json2 inclusion

para más detalles. Hay casos en los que tenemos que lidiar con casos en los que los clientes usan los estándares IE7. Entonces, nuestro código también tenía que atender esos casos. Muchos cientos de clientes que utilizan los estándares IE7 acceden a nuestro sitio web minorista. Incluyendo json2 resuelve este problema

2

He hecho LOCAL Jquery agregó la prueba del código .NEt 2.0, funciona bien sin ningún problema. Pero después de migrar el código al servidor IIS v6 y luego acceder desde el mismo navegador IE, el problema aparece como "JSON" indefinido. Después de leer esta recomendación, descargue el archivo json2.js y agregue a continuación en el código fuente.

<script type="text/javascript" src="json2.js"></script> 

EVERYTHING WORKING Fine.

Bien, gracias.