Mehrdimensionale Arrays per ajax an PHP
Ok, ernsthaft zu kämpfen hier. Ich habe einige Probleme, die versuchen, senden eine multdimensional array an PHP über ajax. Hier ist, was ich versucht haben:
Zu vereinfachen, anstatt zu kopieren-einfügen in eine Wand ein code:
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';
Möchte ich, um dies zu php über post
. Ich dachte, ich kann auch einfach verbinden Sie zusammen, als ich multidimensional bin eh so :
main_array['peoplearray'] = peoplearray;
nun den 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 bin ich gerade dabei das folgende jetzt:
$data= $_POST['data'];
print_r($data);
in firebug: (an empty string)
wenn ich die var data = JSON.stringify(main_array);
unkommentiert bekomme ich die folgende: [][
wenn ich $data = json_decode($_POST['data']);
auf die php bekomme ich:
Array ( )
Grundsätzlich die main_array
ich begreife nicht brauchen, um ein array-und so kann ich das Zeug über das kein problem, aber was ich tun müssen, ist Holen Sie sich die peoplearray
über, so dass ich tun kann, einige foreach
etc... mit in php. Jede Hilfe wäre sehr geschätzt, die ich bin sicher, ich bin einfach nur dumm!
EDIT: Die Argumentation hinter diesem ist, dass peoplearray
haben könnte 0 oder 100 Einträge, so dass ich nur brauchen, um es zu php, so kann ich foreach
es zu tun, die DB-Eingänge. Wenn es ein besserer Ansatz wäre ich sehr dankbar zu hören, wie ich es bin noch ziemlich neu in diesem.
EDIT: Dank an Nicola ' s Antwort auf alles ist vorbei einwandfrei außer der wichtige Teil, die mainarry.peoplearray - es ist nicht angezeigt, in der die Rückkehr console.log
und ich kann nicht darauf zugreifen, in PHP. Alle Lösungen auf dieser oder muss ich die foreach-Intelligenz in javascript und schicken Sie einfach alles einzeln?
Ich erhalte das richtige Ergebnis mit der Konsole.log(main_array), wenn es zu tun, bevor das JSON-Format.stringify. Nach dem JSON.stringify bekomme ich: []. Soweit die ajax-das ist alles was ich mache, derzeit. In der Tat ist es die einzig wahre Kopie und paste! Nur bis zu diesem Punkt hat mich für immer debugging-arrays in Chrom ist ein Nein, Nein, habe ich gerade herausgefunden.
InformationsquelleAutor Zac | 2012-03-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst
main_array
ist kein array sondern ein Objekt, weil in javascript gibt es keine assoziativen arrays und aus diesem Grundentspricht
und Sie sollten erklären, main_array wie diese
dann versuchen zu ändern Ihre Funktion wie folgt:
- und server-Seite
InformationsquelleAutor Nicola Peluchetti
Ich habe es zu arbeiten, indem Sie die
peoplearray
zu trennen.Also Tat ich wie Nicola sagte und erstellt
mainarray
als ein Objekt, dh. erklären mit curlies:{}
Den
peoplearray
ich Links als array ie erklären mit[]
aber dannname,age&sex
Felder, auf die ich als Objekt erstellt, dh. {} und dann.push()
Sie in derpeoplearray
.Dann die ajax sah wie folgt aus:
dann mit der PHP-alles steht in der $_POST, und wenn Sie
Objekte ie
name,age,sex
Eigenschaften sind in derJa aus irgendeinem Grund die beiden die post und zurück war zu zeigen, wie null, wenn ich hatte ein array in das Objekt oder ein array innerhalb eines Arrays, das ist, warum ich hatte, um Sie zu Spalten, und stellen Sie sicher, dass jede 'person' wurde ein Objekt in der
peoplearray
. Vielen Dank für deine Hilfe, Nicola.InformationsquelleAutor Zac