Frage

Ich habe einen Fehler, den ich nirgendwo erwähnt habe. Ich entwickle einen AJAX-fähigen WCF-Webdienst mit ASP.NET. In meiner ASP.NET -Masterseite der ASP.NETu003Casp:ScriptManager> Ich habe die JSON.JS -Datei aufgenommen, die frisch von json.org kopiert wurde. Wenn ich die Seite ausführe, schlägt sie in der ersten Codezeile in json.js (nach vielen Kommentaren) fehlschlägt (VS 2008 eine JavaScript -Ausnahme), nämlich:

JSON = JSON || {};

Der Fehler besagt, dass JSON undefiniert ist:

Microsoft Jscript Runtime Fehler: 'JSON' ist undefiniert

Nun, duh! Deshalb testet die Linie, ob sie definiert ist und ob sie sie auf ein leeres Objekt einstellen! Es soll undefiniert sein, oder? Zuletzt hörte ich, dass es kein Fehler in JavaScript war, eine solche Operation auf einer undefinierten Variablen auszuführen.

Kann mir jemand eine Ahnung geben, was hier los ist? Ich vermute, es ist etwas, was anderswo falsch ist, was dieses Problem irgendwie verursacht. Ich habe weder mit JavaScript noch ASP.NET tiefe Erfahrung, daher fehlt mir möglicherweise ein gewöhnliches Gotcha im Setup.

War es hilfreich?

Lösung

Sie sollten verwenden Json2.js. Die beleidigende Linie wurde geändert:

// 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 = {};
}

Andere Tipps

Ich würde sicherstellen, dass Ihre Seite im IE8 -Standardmodus wiedergegeben wird. Ich fand heraus, dass wenn das Dokument in Macken oder IE7 -Modus rendert, this.JSON ist nicht definiert.

Sie können IE8 zwingen, den IE8 -Standardmodus zu rendern, indem Sie das folgende Meta -Tag auf Ihre Seite aufnehmen:

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

Wie bereits erwähnt, sollten Sie JSON2 verwenden.

Der Fehler beruht jedoch auf die MS -Handhabung globaler Variablen. Versuchen Sie Window.json = window.json || {}; Von da an sollte JSON gut funktionieren.

Sie müssen vielleicht tun var JSON = JSON || {}; Ich habe ähnliche Probleme mit JavaScript in IE8 aufgetreten.

Ich hatte das gleiche Problem, mit dem ich versuchte, Google Maps "StreetView" zu verwenden. Das StreetView -Fenster würde völlig schwarz werden und ich würde das Symbol in der Statusleiste erhalten, die einen Fehler anzeigt. Ich habe Divx so deaktiviert, wie Webdev007 und das Problem gelöst wurden! Webdev, du bist ein Genie! Vielen Dank!

Ich habe kürzlich angefangen, den JSON undefinierten JavaScript -Fehler zu erhalten und stellte fest, dass das Problem auf eine kürzlich durchgeführte DIVX -Add im IE zurückzuführen ist. Das Divx -Hinzufügen führte auch die sicheren Inhaltswarnungen auf Webseiten, auf denen alle HTTPS -Referenzen und keine HTTP -HTTP aufgetreten sind (ich habe meinen angezeigten Mischinhalt festgelegt, um die Korrektur von Referenzen während der Webentwicklung aufzufordern). Nachdem ich das DIVX -Add deaktiviert hatte, verschwand der JSON -undefinierte JavaScript -Fehler ebenso wie die fehlerhaften sicheren Inhaltswarnpop -Ups.

Ich habe den gleichen Fehler und habe bereits JSON2 verwendet.

Für mich funktioniert es, wenn ich hinzufüge var vor dem Ausdruck:

var JSON = JSON || {};
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top