jQuery AJAX cu parametrii de array multiplu

Am postat cu succes o singură matrice, dar nu pot să-mi dau seama cum să trimit mai mult de un tablou într-un post AJAX. Aici este codul meu pentru o matrice:

var a = new Array();
// fill array
var a_post = {};
a_post['array1[]'] = a;

$.ajax({
    url: "submitOrder.php",
    data: a_post,
    type: 'post',
    success: function(data) {
        alert(data);
    }
});

Și în submitOrder.php am:

$array1= $_POST['array1'];

foreach ($array1 as $a => $b)
echo "$array1[$a] 
";

Acest lucru funcționează bine. Cu toate acestea, atunci când încerc să adaug un al doilea array b_post în câmpul data: , nu funcționează. Am încercat data: {a_post, b_post}, și câteva variante ale acesteia, dar nu reușesc să funcționeze corect. În timp ce mă aflu la el, cum aș încărca apoi submitOrder.php după postare, mai degrabă decât arătând o alertă a datelor?

UPDATE

Folosind sugestia lui Nicolas, am reușit să lucrez schimbând câmpul de date la:

data: {'array1':JSON.stringify(a), 'array2':JSON.stringify(b)},

Cu toate acestea, trebuie să adaug și restul datelor din formular introduse de utilizator. Pot obține aceste date cu $ (this) .serialize() , dar dacă încerc să adaug acest în câmpul data </​​code>, nu funcționează. Cum pot adăuga aceste date la linia de mai sus?

Mulțumiri.

SOLUȚIE

Ceea ce a început să lucreze așa cum speram inițial (cu ajutorul lui Nicolas):

var formData = $(this).serializeArray();
var a_string = JSON.stringify(a);
formData.push({name: 'array1', value: a_string});
var b_string = JSON.stringify(b);
formData.push({name: 'array2', value: b_string});

$.ajax({
    url: "submitOrder.php",
    data: formData,
    type: 'post',
    success: function(data) {
        alert(data);
    }
});            
0

1 răspunsuri

Datele ar trebui incluse în acest fel

data: {'first_array':JSON.stringify(array1),'second_array':JSON.stringify(array2)}

Apoi, în PHP:

$array1 = json_decode($_POST['first_array']);
$array2 = json_decode($_POST['second_array']);

Puteți adăuga restul de intrări, de asemenea.

data: {'first_array':JSON.stringify(array1),'second_array':JSON.stringify(array2),'input1':$(input[name="input1"]).val()}

Doar repetați cu toate intrările pe care doriți să le trimiteți.

'input1':$(input[name="input1"]).val(),'input2':$(input[name="input2"]).val(),... etc
0
adăugat
Acest lucru funcționează frumos pentru scopurile mele, cu toate acestea, aș dori, de asemenea, să includă și datele mele standard de formular. Cel mai simplu mod de a face acest lucru ar fi adăugarea $ (this) .serialize() în câmpul de date, dar acest lucru nu este permis. Cum aș putea include și restul datelor de intrare din formular?
adăugat autor Kevin_TA, sursa
Mulțumiri. Mi-am actualizat întrebarea cu soluția completă care a funcționat.
adăugat autor Kevin_TA, sursa
Adăugați ceea ce ați cerut
adăugat autor Nicolás Torres, sursa
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com