Come posso inviare un array JavaScript come variabile JSON nella mia richiesta AJAX?Invia un array JavaScript come valore JSON?
risposta
Ciò richiede di serializzare l'array JavaScript in una stringa, somethi ng che può essere fatto facilmente usando l'oggetto JSON.
var myArray = [1, 2, 3];
var myJson = JSON.stringify(myArray); // "[1,2,3]"
....
xhr.send({
data:{
param: myJson
}
});
Come l'oggetto JSON non è presente nei browser meno recenti si dovrebbe includere Douglas Crockfords json2 biblioteca
Se già contare su qualche libreria che include metodi per la codifica/serializzazione quindi è possibile utilizzare questo invece. Per esempio. ExtJs ha Ext.encode
Se non si utilizza una libreria javascript (jQuery, prototype.js, ecc) che farà questo per voi, si può sempre utilizzare il example code from json.org
Basta codificare l'array e inviarlo come parte della vostra AJAX recuest:
http://www.openjs.com/scripts/data/json_encode.php
ci sono troppi altri encoder, o anche plugin per jQuery e Mootools: D
Ecco un esempio:
var arr = [1, 2, 3];
$.ajax({
url: "get.php",
type: "POST",
data: {ids:arr},
dataType: "json",
async: false,
success: function(data){
alert(data);
}
});
In get.php:
echo json_encode($_POST['ids']);
Array viene convertito in oggetto utilizzando {ids: arr}, passare l'oggetto stesso e lasciando jQuery eseguire la formattazione della stringa di query.
Quindi tutto ciò crea una stringa: "[1,2,3]" ... Ma cosa succede se voglio inviare una stringa che inizia e finisce con [], sarà il lato server in grado di dire al differenza? – thedp
Non hai detto JSON? Questo è per definizione solo il formato del contenuto di una stringa. Se in effetti volevi inviare un _array_ al server, questa è una domanda diversa. Ma detto questo, se uno degli elementi nella matrice contiene [o], allora verrà automaticamente sfuggito dal metodo di serializzazione. –
Ho provato un esempio fisso inviando la stringa "[1,2,3]" al server usando ajax/json. Ma quando controllo il valore ricevuto con $ val [0] mi dà: "[". Devo elaborare l'array JSON sul lato server prima di poterlo utilizzare? – thedp