Pregunta

Quiero enviar una matriz construida en javascript con los valores seleccionados de una selección múltiple. ¿Hay alguna manera de enviar esta matriz a un script php usando ajax?

¿Fue útil?

Solución

Puede publicar nuevamente en su servidor con XML o JSON. Su javascript tendrá que construir la publicación, que en el caso de XML requeriría que la cree en javascript. JSON no solo es más liviano sino más fácil de hacer en javascript. Consulte JSON-PHP para analizar JSON.

Es posible que desee echar un vistazo a Crear datos JSON en PHP

Otros consejos

Puede hacerlo con el método $ .post de jQuery (por ejemplo):

var myJavascriptArray = new Array('jj', 'kk', 'oo');

$.post('urltocallinajax', {'myphpvariable[]': myJavascriptArray }, function(data){
   // do something with received data!
});

Php recibirá una matriz que se denominará myphpvariable y contendrá los valores de myJavascriptArray.

¿Es eso?

IIRC, si PHP ve una cadena de consulta que se parece a http://blah.com/test.php?var[font>=foo&var[[=bar&var[[=baz , creará automáticamente una matriz llamada $ var que contiene foo, bar y baz. Creo que incluso puede especificar el índice de matriz en los corchetes de la cadena de consulta y pegará el valor en ese índice. Es posible que necesite codificar los corchetes en la URL ... La forma habitual en que se usa esta característica es creando un campo de entrada HTML con el nombre '' var [] '', así que haga lo que el navegador normalmente hace allí. Hay una sección en la documentación de PHP sobre variables de matriz a través de la solicitud.

Puede estar buscando una forma de Serializar (versión jQuery) los datos.

jQuery 1.4 se actualizó para usar la sintaxis PHP para enviar matrices. Puede cambiarlo al estilo antiguo usando:

aquí está la sintaxis:

jQuery.ajaxSetting.traditional = true;

aquí está el ejemplo

$.ajax({    
 traditional: true,
 type: "post",
 url: myURL,
 dataType: "text", 
 data: dataToSend, //this will be an array eg. 
 success: function(request) {
  $('#results').html(request);
 }  // End success
 }); // End ajax method

Puede crear una matriz y enviarla, como Meador recomienda: (el siguiente código está Mootooled, pero es similar en otras bibliotecas / JS antiguo)

myArray.each(function(item, index)  myObject.set('arrayItems['+index+']', item);
myAjax.send(myObject.toQueryString());

Eso enviará a php una matriz llamada arrayItems, a la que se puede acceder a través de $ _POST ['arrayItems']

echo 

Puede crear una matriz y enviarla, como Meador recomienda: (el siguiente código está Mootooled, pero es similar en otras bibliotecas / JS antiguo)

myArray.each(function(item, index)  myObject.set('arrayItems['+index+']', item);
myAjax.send(myObject.toQueryString());

Eso enviará a php una matriz llamada arrayItems, a la que se puede acceder a través de $ _POST ['arrayItems']

<*>

hará eco de algo como: array = > {[0] = > 'first thing', [1] = > segunda cosa}

POST['arrayItems'] ;

hará eco de algo como: array = > {[0] = > 'first thing', [1] = > segunda cosa}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top