Domanda

Riscontro un errore di cui non sono stato in grado di trovare alcun riferimento. Sto sviluppando un servizio Web WCF abilitato per AJAX con ASP.NET. Nella mia pagina principale ASP.NET & Lt; asp: ScriptManager & Gt ;, ho incluso il file json.js, copiato da json.org. Quando eseguo la pagina, non riesce (VS 2008 rileva un'eccezione Javascript) sulla prima riga di codice in json.js (seguendo molti commenti), ovvero:

JSON = JSON || {};

L'errore dice che JSON non è definito:

  

Errore di runtime di Microsoft JScript: "JSON" non è definito

Bene, duh! Ecco perché la linea sta testando se è definita e in tal caso impostandola su un oggetto vuoto! Dovrebbe essere indefinito, giusto? L'ultima volta che ho sentito non è stato un errore in Javascript eseguire tale operazione su una variabile non definita.

Qualcuno può darmi un indizio su cosa sta succedendo qui? Sospetto che qualcosa sia andato storto altrove, che in qualche modo sta causando questo problema. Non ho una profonda esperienza con Javascript o ASP.NET, quindi potrebbe essere che manchi qualche gotcha comune nell'installazione.

È stato utile?

Soluzione

Dovresti utilizzare json2.js . La linea offensiva è stata modificata:

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

Altri suggerimenti

Mi assicurerei che il rendering della tua pagina sia in modalità standard IE8; Ho scoperto che se il rendering del documento è in modalità Quirks o IE7, this.JSON non è definito.

Puoi forzare il rendering di IE8 in modalità standard IE8 includendo il seguente meta tag nella tua pagina:

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

Come accennato, dovresti usare json2.

L'errore, tuttavia, deriva dalla gestione MS delle variabili globali. Prova window.JSON = window.JSON || {}; Da quel momento in poi, JSON dovrebbe funzionare perfettamente.

potresti dover fare var JSON = JSON || {}; Ho riscontrato problemi simili con Javascript in IE8.

Ho avuto lo stesso problema nel tentativo di utilizzare google maps " streetview " ;. La finestra di Streetview diventerebbe completamente nera e visualizzerei l'icona nella barra di stato che indica un errore. Ho disabilitato DivX come ha fatto webdev007 e il problema è stato risolto! Webdev, sei un genio! Grazie!

Di recente ho iniziato a ricevere l'errore JavaScript non definito JSON e ho riscontrato che il problema era dovuto a un recente componente DivX in IE. Il componente aggiuntivo DivX ha inoltre causato avvisi di contenuto sicuro su pagine Web che contenevano tutti i riferimenti https e non quelli http (ho impostato il mio contenuto misto display su Richiedi per correggere i riferimenti durante lo sviluppo Web). Dopo aver disabilitato il componente aggiuntivo DivX, l'errore JavaScript non definito JSON è scomparso così come i popup di avviso sul contenuto sicuro errato.

Ho lo stesso errore e stavo già usando json2;

Per me funziona quando aggiungo var prima dell'espressione:

var JSON = JSON || {};
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top