2012-01-31 34 views
15

Ho usato ajax nel codice che funziona perfettamente e mi fornisce json o array che voglio sempre come output. il codice che ho utilizzato è,come convertire json/array da ajax responseText in javascript array?

xmlhttp=new XMLHttpRequest(); 
xmlhttp.open("GET","http://map_ajax_control.php",false); 
xmlhttp.send(); 

var test = xmlhttp.responseText; 
alert(test); 

Questa variabile di prova mi dà JSON/array.

Desidero ottenere i dati che ho ricevuto nella variabile di test nell'array JavaScript.

La domanda è, come posso decodificare i dati json nell'array javascript? Ho usato il codice come,

var output = new Array(); 
output = json_decode(xmlhttp.responseText); 

ma questo codice non mi sta dando alcun output.
Come posso fare questo due cose?

+2

appesantire una web app con l'intera libreria jQuery sarebbe eccessivo se tutto questo richiede è la logica per un gestore di JSON ajax – ComethTheNerd

risposta

13

Prova questo:

var arr = xmlhttp.responseText.Split(','); 

Se non risolve il problema allora nel codice php, utilizzare semplici json_encode(your array); e javascript, utilizzare myData= eval("(" + xmlHttp.responseText + ")");.

suggerisco di seguire questo approccio:

codificare i dati che si desidera inviare mediante un PHP binding for JSON sul server e decodificare lo stesso utilizzando Javascript library for JSON. come:

var myObject = eval('(' + myJSONtext + ')'); 

o

var myObject = JSON.parse(myJSONtext, reviver); 

Nota: Includere json2 file javascript alla soluzione ..

Problem with storing values in Array from php to AJAX

+0

Assolutamente! Stavo ottenendo un oggetto risposta object invece di un tipo semplice. Usando questo approccio (e conoscendo un po 'l'oggetto), posso estrarre il campo ** d ** che è il booleano a cui tenevo in questo caso. – Allen

+0

WTH, PER FAVORE non usare l'opzione 'eval' per decodificare il json, è una vulnerabilità xss evidente – T0m

18

La maggior parte dei browser supporta JSON.parse(). Il suo utilizzo è semplice:

 

obj = JSON.parse(xmlhttp.responseText); 
alert(obj.length); 
 

Per i browser che non è possibile implementare utilizzando json2.js.

+0

Ho usato questo also.But la sua non working.It non mi sta dando alcun uscita –

1

JSON è altro che JavaScript Object Notation. Hai solo bisogno di analizzarlo come suggerito da Sudhir. Puoi anche usare jQuery.parseJSON per questo.

E per fare ajax, ti consiglio caldamente di usare qualche libreria, preferibilmente jQuery.

http://api.jquery.com/jQuery.ajax/

Problemi correlati