Question

Je rencontre une erreur que je n'ai pu trouver nulle part. Je développe un service Web WCF compatible AJAX avec ASP.NET. Dans mon & Lt; asp: ScriptManager & Gt; de ma page maître ASP.NET, j'ai inclus le fichier json.js, copié à partir de json.org. Lorsque j'exécute la page, elle échoue (VS 2008 intercepte une exception Javascript) sur la première ligne de code dans json.js (après de nombreux commentaires), à savoir:

JSON = JSON || {};

L'erreur indique que JSON n'est pas défini:

  

Erreur d'exécution Microsoft JScript: "JSON" n'est pas défini

Eh bien, duh! C'est pourquoi la ligne teste si elle est définie et si c'est le cas, définissez-la sur un objet vide! C'est supposé être indéfini, non? La dernière fois que j’ai entendu dire que ce n’était pas une erreur en Javascript d’exécuter une telle opération sur une variable non définie.

Quelqu'un peut-il me donner un indice sur ce qui se passe ici? Je soupçonne que c'est quelque chose qui ne va pas ailleurs qui cause ce problème. Je n'ai pas d'expérience approfondie avec Javascript ou ASP.NET, il se peut donc que je manque un piège commun dans la configuration.

Était-ce utile?

La solution

Vous devriez utiliser json2.js . La ligne incriminée a été modifiée:

// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.

if (!this.JSON) {
    this.JSON = {};
}

Autres conseils

Je m'assurerais que votre page est rendue en mode standard IE8; J'ai constaté que si le document est rendu en mode Quirks ou IE7, this.JSON n'est pas défini.

Vous pouvez forcer IE8 à effectuer le rendu en mode standard IE8 en incluant la balise META suivante sur votre page:

<meta http-equiv="x-ua-compatible" content="IE=8" />

Comme mentionné, vous devriez utiliser json2.

L’erreur, cependant, provient de la manipulation par MS de variables globales. Essayez window.JSON = window.JSON || {}; JSON devrait désormais fonctionner correctement.

vous devrez peut-être faire var JSON = JSON || {}; J'ai rencontré des problèmes similaires avec Javascript dans IE8.

J'ai eu le même problème en essayant d'utiliser Google Maps & "Streetview &"; La fenêtre donnant sur la rue deviendrait complètement noire et j'obtiendrais l'icône dans la barre d'état indiquant une erreur. J'ai désactivé DivX comme WebDev007 l'a fait et le problème a été résolu! Webdev, vous êtes un génie! Merci!

J'ai récemment commencé à recevoir l'erreur JavaScript non définie JSON et j'ai découvert que le problème était dû à une récente extension DivX dans IE. L’ajout de DivX a également provoqué des avertissements de contenu sécurisé sur les pages Web contenant toutes les références https et non http (je règle mon contenu mixte Display sur Demander pour corriger les références lors du développement Web). Après avoir désactivé l’ajout DivX, l’erreur JavaScript non définie JSON a disparu ainsi que les avertissements de contenu sécurisé erronés.

J'ai la même erreur et j'utilisais déjà json2;

Pour moi, cela fonctionne lorsque j'ajoute var avant l'expression:

var JSON = JSON || {};
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top