Ok, estoy teniendo problemas aquí. Estoy teniendo problemas al intentar enviar una matriz multidimensional a PHP a través de ajax. Esto es lo que he estado intentando:Arrays multidimensionales vía ajax a PHP
Para simplificar en lugar de copiar y pegar una pared de código:
peoplearray[0] = [name] => 'john'
[age] => '28'
[sex] => 'Male'
peoplearray[1] = [name] => 'julie'
[age] => '20'
[sex] => 'Female'
main_array['item'] = 'x';
main_array['something'] = 'x';
main_array['another'] = 'x';
Quiero conseguir que esto PHP a través de post
. Pensé que pueda Aswell simplemente unirlos como soy multidimensional de todas formas por lo tanto:
main_array['peoplearray'] = peoplearray;
ahora para hacer el Ajax:
// var data = JSON.stringify(main_array);
var send = $.ajax({
type: "POST",
cache: false,
url: "theurl",
data: {data:main_array} //I do change this `main_array` when using the above stringify!
});
send.done(function(msg) {
console.log(msg);
})
en PHP sólo estoy haciendo lo siguiente en este momento:
$data= $_POST['data'];
print_r($data);
en Firebug: (an empty string)
cuando tengo la var data = JSON.stringify(main_array);
sin comentar consigo el siguiente: [][
si añado $data = json_decode($_POST['data']);
a la php me sale:
Array ()
Básicamente, el main_array
realizo no tiene que ser una matriz y para que pueda obtener esas cosas a través de ningún problema pero lo que tengo que hacer es obtener el peoplearray
para poder hacer un poco de foreach
etc ... con él en php. Cualquier ayuda sería muy apreciada. ¡Estoy seguro de que solo estoy siendo estúpido!
EDITAR: El razonamiento detrás de esto es que peoplearray
podría tener 0 o 100 entradas, así que solo necesito obtenerlo para php, así que puedo foreach
hacer las entradas de DB. Si hay un mejor enfoque, estaría muy agradecido de escucharlo, ya que todavía soy bastante nuevo en esto.
EDITAR: Gracias a la respuesta de Nicola todo está pasando bien, excepto la parte importante que es mainarry.peoplearray - no aparece en la declaración console.log
y no puedo acceder a ella en PHP. ¿Alguna solución sobre esto o tengo que poner la inteligencia foreach en el javascript y simplemente enviar todo de forma individual?
puede publicar toda la función de JS que hace la solicitud de AJAX? si usas console.log (main_array) (antes de llamar a $ .ajax) ¿qué muestra en firebug? –
Obtengo el resultado correcto con console.log (main_array) cuando lo hago antes de JSON.stringify. Después de JSON.stringify obtengo: []. En cuanto al ajax, eso es todo lo que estoy haciendo actualmente. De hecho, ¡es la única copia y pega verdadero! Solo para llegar a este punto me ha llevado siempre depurar matrices en Chrome. No, no, acabo de enterarme. – Zac