web-dev-qa-db-fra.com

JSON.stringify et JSON.parse ne fonctionnent pas dans IE9?

J'utilise JSON.Stringify et JSON.parse partout et cela fonctionne bien avec Firefox. Cela ne fonctionne plus avec IE9 ni avec IE8. Que puis-je faire?

16
saurabh ranu

pourquoi voulez-vous que le navigateur ait l’objet au lieu d’inclure le fichier script de Douglas Crockford? Vous pouvez trouver le fichier minifed ici: http://www.json.org/js.html

Une fois importé, vous n'avez pas à vous soucier de la méthode existante dans un navigateur.

10
Baz1nga

JSON.stringify commence par une s minuscule. stringify et parse sont tous deux disponible dans IE8 + , mais uniquement en mode standard.

Faites précéder votre document avec <!DOCTYPE html> si vous utilisez actuellement le mode quirks. Observez également la mise en majuscule des méthodes JavaScript que vous appelez - toutes les méthodes intégrées commencent par un caractère minuscule.

34
phihag

Pour une alternative, dans un scénario où vous pourriez avoir besoin de fonctionner en mode strict pour une raison quelconque (j'ai une autre bibliothèque qui inclut "use strict"), vous pouvez chercher ici: https://github.com/douglascrockford/JSON -js . J'ai modifié ceci pour vérifier d'abord si JSON est indéfini, et ne générer la fonction JSON.parse que si: 

if (typeof JSON === "undefined") {
    var JSON = {
        parse: <insert value of json_parse from library here>
    };
}

Mon problème était que le code d'application ne fonctionnait pas dans IE9 (le mode strict étant utilisé par une bibliothèque participante, je crois). Cela a résolu le problème pour moi.

0
uch

le simple problème est que l'envoi d'en-têtes UTF-8 invalidera le JSON (IE n'a pas/n'a pas aimé cela). comme le problème est décrit, cela pourrait toujours s'appliquer à IE9 ... une fois écrit un comment , il y a quelques années. L'ajout de la prise en charge JSON à un navigateur capable d'analyser le JSON natif n'est probablement pas la solution optimale, car il génère une surcharge inutile - uniquement parce que le JSON n'a pas été livré au format attendu.

0
Martin Zeitler