Wednesday, June 5, 2024
 Popular · Latest · Hot · Upcoming
85
rated 0 times [  91] [ 6]  / answers: 1 / hits: 25061  / 12 Years ago, mon, june 4, 2012, 12:00:00

I've successfully posted a single array, but I can't figure out how to send more than one array in an AJAX post. Here is my code for one array:



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);
}
});


And in submitOrder.php I have:



$array1= $_POST['array1'];

foreach ($array1 as $a => $b)
echo $array1[$a] <br />;


This works fine. However, when I try to add a second array b_post to the data: field, it doesn't work. I tried data: {a_post, b_post}, and a few variations of that, but I can't get it to work properly. While I'm at it, how would I then load submitOrder.php after posting rather than show an alert of the data?



UPDATE



Using Nicolas' suggestion, I got this to work changing the data field to:



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


However, I also need to add the rest of the form data that has been input by the user. I can get this data with $(this).serialize() but if I try to add that to the data field, it does not work. How can I add this data to the above line?



Thanks.



SOLUTION



What ended up working the way I originally had hoped for (with Nicolas' help):



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);
}
});

More From » jquery

 Answers
17

The data should be encapsuled this way



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


Then in PHP:



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


You can add the rest of the inputs as well.



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


Just repeat with all the inputs you want to send.



'input1':$(input[name=input1]).val(),'input2':$(input[name=input2]).val(),... etc

[#85156] Saturday, June 2, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
tyquandaquanl

Total Points: 122
Total Questions: 109
Total Answers: 101

Location: South Georgia
Member since Sun, Aug 8, 2021
3 Years ago
;