76

Scusate per il mio disturbo, ma dopo settimane stare alzato fino a tardi e aver appena messo online il mio sito, non ho più energia per il debug ... Non riesco a Google come implementare JSON su IE6 & IE7 ... sto usandoJSON on IE6 (IE7)

JSON.stringify(...) 

da quello che ho capito JSON non è costruita in su IE6-7 e deve essere aggiunto in modo dinamico a in-line il codice ... come si fa quella?

Ho già jQuery - è la mia corretta comprensione che il loro motore JSON si basa sul browser nativo?

Quindi alcuni commenti sul codice JSON non valido che non riescono a IE6-7, ma ho pensato che non fosse nativo in IE6-7?

Chiunque?

risposta

103

Dal momento che si desidera utilizzare il metodo di JSON.stringify, è necessario includere il JSON3 parser al fine di sostenerlo su IE 8. <

Questa libreria è conforme ai metodi standard della specifica ECMAScript 5th Edition e verifica se è disponibile un'implementazione nativa, così nel browser moderno verrà utilizzata questa implementazione nativa.

+0

thx - Ho bisogno del codice per includerlo dinamicamente * solo su IE6/7 * (vale a dire, anche il rilevamento del browser è necessario) –

+1

o sto fraintendendo - forse non ne ho bisogno in modo dinamico poiché JSON utilizza il browser nativo se disponibile, quindi è solo uno nell'intestazione? –

+2

@David, potresti semplicemente includerlo nelle tue pagine, e se il browser supporta l'oggetto globale JSON, non farà nulla, o se vuoi lo potresti includere dinamicamente solo "if (typeof JSON == 'undefined') ' – CMS

2

Deve esserci qualcosa di incompreso. La notazione oggetto è stata in JavaScript per un po 'di tempo (per quanto ho capito, è un concetto base di JavaScript). Voglio dire, la capacità di scrivere codice come var o= {a:"b"};
Quindi, se è possibile farlo, è anche possibile chiamare eval('var o= {a:"b"};') e questo è il modo in cui "implementa JSON" in qualsiasi browser.

AGGIORNAMENTO: rileggi il tuo post e finalmente hai capito che il problema è la serializzazione degli oggetti, non la deserializzazione. Quindi è possibile utilizzare la libreria JavaScript per: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

+1

emm ... perché eval()? –

+0

@David, penso che sia l'unica opzione disponibile se si ricevono dati JSON da qualche origine dati esterna. Non è vero? – naivists

+0

Ho un po 'paura di stringere manualmente - un'altra possibile fonte di errore ... –

1

"codice in-line aggiunto dinamicamente" utilizza la funzionalità fornita dalla libreria json2 di Douglas Crockfords o l'implementazione di jQuery se la versione del browser non la supporta in modo nativo.

jQuery non si basa su alcuna funzionalità di decodifica JSON fornita dal browser. Se il browser supporta la decodifica JSON, jQuery lo utilizzerà.

+0

ok usando jQuery sarebbe bello visto che è già incluso, ma perché JSON.stringify (...) non funziona su IE6-7, c'è qualche sintassi speciale per jQuery JSON? –

+0

JSON.stringify funziona su IE6-7, a condizione che tu abbia aggiunto lo script: \ – Matt

+0

jQuery JSON funziona come segue: 'jquery.parseJSON (str)' – Matt

2

Basta includere json2.js nel file per giocare con JSON. Funzionerà anche in IE 9.