2010-05-11 24 views

risposta

14

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

+0

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

+0

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. –

+0

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

1

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

1

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.

Problemi correlati