70 votes

Objet JSON pas défini dans Internet Explorer 8 DOM

Actuellement, je suis en train d'écrire un fichier JavaScript et avoir la ligne suivante:

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

le résultat est placée juste au-dessus de cette ligne. La question que je vais avoir, c'est que IE8 (IE8 seulement, qui est) est la déclaration à moi que JSON est pas défini en quelque sorte. Je ne suis pas sûr que faire de ce car, comme je l'ai compris, IE8 est un navigateur qui mettent en œuvre la prise en charge de JSON. Quelqu'un a une idée de ce qui pourrait se passer?

117voto

Andy E Points 132925

Assurez-vous que vous êtes réellement dans IE 8 mode à l'aide de la méthode préférée, une des normes doctype...

<!DOCTYPE html>

...ou indésirables de la méthode, l' X-UA-Compatible de la balise meta/en-tête...

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

Voir la Définition de la Compatibilité des documents pour plus d'informations.

9voto

Chen Points 40

À l'aide de jQuery.parseJSON résolu ce problème pour moi, dans le cas où vous êtes déjà à l'aide de JQuery.

6voto

Thadeu de Paula Points 76

D'autres choses que l'absence de déclaration ou de fausse déclaration, ou de certains d'une erreur de syntaxe html, c'est à dire à utiliser des modes de document différent de ce à quoi vous vous attendez.

J'ai été en utilisant de simples "" dans un document de test et l'absence de balise de TITRE, comme un enfant de la balise HEAD de fenêtres.JSON devenir indéfini.

Souvenez-vous toujours que c'est mieux de tester la ressource par rapport à la version de navigateur. Et, si vos utilisateurs puissent utiliser la d'IE à l'émulation des modes de document, c'est mieux vous avez un morceau de code à fournir au format JSON.analyser et JSON.stringify les indigènes ne sont pas définis.

3voto

mq3w Points 31
function parseJson(jsonString) {
    if ($.browser.msie && $.browser.version < 8) {
        return eval('(' + jsonString + ')');
    }
    else {
        return JSON.parse(jsonString);
    }
}

2voto

user126083 Points 11

Peut arriver malgré <!DOCTYPE html> si le codage de la page est - UTF-8 avec BOM (byte order mark). Essayez d'enregistrer le fichier en tant que UTF-8 sans BOM, utiliser un bon éditeur de texte.

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