Actualmente estoy escribiendo un archivo JavaScript y tiene la siguiente línea:

var res = "JSON=" + JSON.stringify(result);

resultado es justo por encima de esta línea. El problema que estoy teniendo es que internet explorer 8 (IE8 sólo, que es) es la presentación de informes a mí que JSON no está definido de alguna manera. No estoy seguro de qué hacer con esto, ya que, como he entendido, IE8 es un navegador que implementó JSON. ¿Alguien tiene alguna idea de lo que puede estar pasando?

  • Estás en el modo de compatibilidad?
InformationsquelleAutor keybored | 2011-01-17

8 Comentarios

  1. 117

    Asegúrese de que usted está realmente en IE 8 modo utilizando el método preferido, los estándares de doctype…

    <!DOCTYPE html>

    …o la indeseada método, el X-UA-Compatible meta tag/header…

    <meta http-equiv="X-UA-Compatible" content="IE=EDGE" />

    Ver La Definición De Documento De Compatibilidad De para obtener más información.

    • Definitivamente vale la pena visitar este, porque compat modo puede ser activado sin que necesariamente conscientes de ello – abrir las Herramientas de Desarrollador (F12) y buscar en la barra de herramientas del modo de explorador.
    • Se me cayó esta línea y se comprueba que el dev tools. Definitivamente se ejecuta en IE8 Normas Modo.
    • algo debe estar reemplazando el JSON global del objeto. Compruebe el código de las variaciones de JSON = (el código de ejemplo que usted escribió en la pregunta es un buen comienzo – que están utilizando eval?).
    • No he visto nada de eso, pero me preguntaba algo, la anteriormente llamada desde dentro de un iframe. Tengo que llamar a los padres para conseguir realmente en JSON?
    • Finalmente, me arregló el problema. Resulta que no era este PERO IE7 compatibilidad iba a ser una de las cosas que tenía que trabajar y no tienes duda me ahorró tiempo ya. Gracias!
    • +1 para la respuesta correcta. En mi caso no hay problema que se ejecutan localmente en VS2010, pero cuando se publicó en IIS 7 servidor de 64 bits tengo el error.
    • ¿cuál fue la solución?
    • Ha sido un tiempo buit si mal no recuerdo fue un error en mi código JS o transitoria Facebook error. Ojalá pudiera recordar específicamente.
    • Por favor, utilice el tipo de documento en lugar de la X-UA-Compatible basura
    • solo por ti, me has aclarado la respuesta :p
    • lo siento por revivir esto, pero tengo un doctype válido, sin embargo, yo aún tenía problemas con IE10 no tengo Comp modo de configurar manualmente así que no estoy seguro de qué lo desencadenó, mi código es html válido, así que lo único que trabajó para mí es el X-UA basura, los pensamientos ?
    • Mis pensamientos? Es decir, está rota. Yo no lo uso. No espero para ver el DOM desordenado con su basura tampoco. Si IE JS medio ambiente está roto, la carga de JS cuña que lo arregla. O simplemente mostrar un error…
    • No funciona para mí.
    • Necesitaba usar tanto…

  2. 6

    Otras cosas que la ausencia de doctype o mal doctype, o algún error en la sintaxis de html, forzará a ir a usar el documento de modos diferentes de lo esperado.

    Yo estaba usando «simple» en un documento de prueba y la ausencia de etiqueta de TÍTULO como un niño de la etiqueta HEAD hecho de la ventana.JSON convertido en indefinido.

    Recuerda siempre que es mejor para poner a prueba el recurso en contra de la versión de navegador. Y, si los usuarios pueden usar IE con la emulación de documento modos, es mejor que tener un pedazo de código para proporcionar el JSON.analizar y JSON.stringify cuando los nativos son indefinidos.

  3. 3
    function parseJson(jsonString) {
        if ($.browser.msie && $.browser.version < 8) {
            return eval('(' + jsonString + ')');
        }
        else {
            return JSON.parse(jsonString);
        }
    }
    • Esto no incluso el intento de responder a la pregunta.
  4. 2

    Puede suceder a pesar de <!DOCTYPE html> si la codificación de la página es UTF-8 con BOM (marca de orden de bytes). Intente guardar el archivo como UTF-8 sin BOM, mediante un editor de texto.

  5. 1

    poner siguiente código en su archivo js ;

    var JSON = JSON || {};
    
    //implement JSON.stringify serialization
    JSON.stringify = JSON.stringify || function (obj) {
    
    var t = typeof (obj);
    if (t != "object" || obj === null) {
    
        //simple data type
        if (t == "string") obj = '"'+obj+'"';
        return String(obj);
    
    }
    else {
    
        //recurse array or object
        var n, v, json = [], arr = (obj && obj.constructor == Array);
    
        for (n in obj) {
            v = obj[n]; t = typeof(v);
    
            if (t == "string") v = '"'+v+'"';
            else if (t == "object" && v !== null) v = JSON.stringify(v);
    
            json.push((arr ? "" : '"' + n + '":') + String(v));
        }
    
        return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
    }
    };
    
    //implement JSON.parse de-serialization
    JSON.parse = JSON.parse || function (str) {
    if (str === "") str = '""';
    eval("var p=" + str + ";");
    return p;
     };
    • Dejando de lado la falta de cualquier intento de responder a la pregunta, esto es terrible código. Además de la opaca-letra de los nombres de las variables, el roto de formato, y que el recurso a la eval para el análisis, el trampolín es que el stringifier ni siquiera funciona; devuelve el mal resultado para cualquier cadena que contiene una comilla doble, una nueva línea, una barra diagonal inversa, o probablemente un montón de otras cosas.
  6. -1

    Comprobar la versión de jQuery.
    jQuery 2.0 gotas de soporte para IE 6, 7 y 8. El uso de jQuery 1.x lugar, que todavía está soportado oficialmente.
    usted puede utilizar este Código.

    <script src="http://code.jquery.com/jquery-1.9.0.js"></script>
    <script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>

    leer más acerca de jquery migrate.

    si no funciona compruebe este artículo.

    • El OP no ha dicho que él está usando jQuery, e incluso si lo fuera, él se está preguntando acerca de los nativos JSON global que no es parte de jQuery. Esta respuesta es totalmente y completamente irrelevante.
  7. -1

    En mi caso el error no definido era porque me faltaba un JSON de la biblioteca.

    Puede agregar un objeto JSON como este (reemplazar la ruta de acceso relativa con su propio camino):

    <script>
            if (typeof window.JSON == 'undefined') {
              document.write('<script src="../scripts/json2.js"><\/script>'); 
            }
    </script>

    Para json2 de la biblioteca:
    http://cdnjs.com/libraries/json2/

    También hay un json3 de la biblioteca:
    http://cdnjs.com/libraries/json3/

    A continuación, puede hacer referencia a él en el código:

    var array = [];
    array[1] = "apple";
    array[2] = "orange";
    alert(JSON.stringify(array));

Dejar respuesta

Please enter your comment!
Please enter your name here