2010-05-11 16 views

Respuesta

14

para ello, debe serializar la matriz de JavaScript en una cadena, somethi ng que se puede hacer fácilmente utilizando el objeto JSON.

var myArray = [1, 2, 3]; 
var myJson = JSON.stringify(myArray); // "[1,2,3]" 
.... 
xhr.send({ 
    data:{ 
     param: myJson 
    } 
}); 

A medida que el objeto JSON no está presente en los navegadores antiguos que debe incluir Douglas Crockfords json2 biblioteca

Si ya se basan en alguna biblioteca que incluye métodos de codificación/serialización, puede utilizar esto en su lugar. P.ej. ExtJs tiene Ext.encode

+0

Así que todo lo que hace crea una cadena: "[1,2,3]" ... Pero ¿y si quiero enviar una cadena que comienza y termina con [], el lado del servidor podrá decirle a la ¿diferencia? – thedp

+0

¿No dijiste JSON? Eso es por definición solo el formato del contenido de una cadena. Si de hecho desea enviar un _array_ al servidor, esa es una pregunta diferente. Pero habiendo dicho eso, si uno de los elementos en la matriz contiene [o], entonces se escapará automáticamente por el método de serialización. –

+0

Intenté un ejemplo fijo enviando la cadena "[1,2,3]" al servidor usando ajax/json. Pero cuando verifico el valor recibido con $ val [0] me da: "[". ¿Necesito procesar la matriz json del lado del servidor antes de poder usarla? – thedp

1

Si no está utilizando una biblioteca de Javascript (jQuery, prototype.js, etc.) que va a hacer esto para usted, siempre se puede utilizar el example code from json.org

1

Aquí está un ejemplo:

var arr = [1, 2, 3]; 
$.ajax({ 
     url: "get.php", 
     type: "POST", 
     data: {ids:arr}, 
     dataType: "json", 
     async: false, 
     success: function(data){ 
      alert(data); 
     } 
    }); 

En get.php:

echo json_encode($_POST['ids']); 

matriz se convierte en objeto utilizando:, pase el objeto en sí mismo y dejar que jQuery {ids arr} hacer el formato de cadena de consulta.

Cuestiones relacionadas