Ok che lotta seriamente qui. Sto riscontrando qualche problema nel tentativo di inviare una matrice multidimensionale a PHP tramite ajax. Ecco quello che ho cercato:Matrici multidimensionali via ajax a PHP
Per semplificare piuttosto che copiare incollare un muro di codice:
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';
Voglio ottenere questo a PHP tramite post
. Ho pensato che forse partecipavano semplicemente unirsi a loro insieme come sono multidimensionale comunque così:
main_array['peoplearray'] = peoplearray;
ora a fare l'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);
})
in PHP sto solo facendo quanto segue in questo momento:
$data= $_POST['data'];
print_r($data);
in firebug: (an empty string)
quando ho la var data = JSON.stringify(main_array);
non commentata ottengo il seguente: [][
se aggiungo $data = json_decode($_POST['data']);
al php ottengo:
Array ()
Fondamentalmente il main_array
mi rendo conto che non c'è bisogno di essere un array e così posso ottenere quella roba attraverso nessun problema ma quello che devo fare è ottenere il peoplearray
in modo che io possa fare un po 'di foreach
ecc ... con esso in php. Qualsiasi aiuto sarebbe molto apprezzato, sono sicuro che sono solo stupido!
EDIT: Il ragionamento dietro questo è che peoplearray
potrebbe avere 0 o 100 voci in modo ho solo bisogno di farlo a PHP così posso foreach
che faccia gli ingressi DB. Se c'è un approccio migliore, sarei molto grato di sentirlo, dato che sono ancora piuttosto nuovo in questo.
EDIT: Grazie alla risposta di Nicola tutto sta passando bene tranne la parte importante che è mainarry.peoplearray - non appare nel ritorno console.log
e non posso accedervi in PHP. Qualche soluzione su questo o devo inserire l'intelligenza foreach in javascript e inviare semplicemente tutto individualmente?
puoi pubblicare l'intera funzione JS che effettua la richiesta ajax? se usi console.log (main_array) (prima di chiamare $ .ajax) cosa mostra in firebug? –
Sto ottenendo il risultato corretto con console.log (main_array) quando lo faccio prima di JSON.stringify. Dopo JSON.stringify ottengo: []. Per quanto riguarda l'Ajax, questo è tutto ciò che sto facendo attualmente. In effetti è l'unica copia e incolla vera! Giusto per arrivare a questo punto mi ci sono voluti per sempre il debug degli array in Chrome è un no no che ho appena scoperto. – Zac