jQuery AJAX avec de Multiples données du Tableau de Paramètres
J'ai réussi a posté un seul tableau, mais je ne peux pas comprendre comment faire plus d'un tableau dans un AJAX post. Voici mon code pour un tableau:
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);
}
});
Et dans submitOrder.php j'ai:
$array1= $_POST['array1'];
foreach ($array1 as $a => $b)
echo "$array1[$a] <br />";
Cela fonctionne bien. Cependant, lorsque j'essaie d'ajouter un second tableau b_post
à la data:
champ, il ne fonctionne pas. J'ai essayé data: {a_post, b_post},
et quelques variantes, mais je ne peux pas le faire fonctionner correctement. Pendant que j'y suis, comment pourrais-je alors charger submitOrder.php
après la publication plutôt que d'afficher un message d'alerte des données?
Mise à JOUR
L'aide de Nicolas, suggestion, j'ai eu ce travail de modification du champ de données:
data: {'array1':JSON.stringify(a), 'array2':JSON.stringify(b)},
Cependant, j'ai aussi besoin d'ajouter le reste de la forme des données qui ont été entrées par l'utilisateur. Je peux obtenir ces données avec $(this).serialize()
mais si j'essaie de l'ajouter à la data
champ, il ne fonctionne pas. Comment puis-je ajouter ces données à la ligne ci-dessus?
Grâce.
SOLUTION
Ce qui finit sur le même chemin que j'avais initialement espéré (avec Nicolas de l'aide):
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);
}
});
OriginalL'auteur Kevin_TA | 2012-06-04
Vous devez vous connecter pour publier un commentaire.
Les données doivent être encapsulé cette façon
Puis en PHP:
Vous pouvez ajouter le reste des entrées.
Juste répéter l'opération avec toutes les entrées que vous souhaitez envoyer.
$(this).serialize()
pour le champ de données, mais ce n'est pas autorisé. Comment pourrais-je également inclure le reste de l'entrée de données à partir de la forme?Ajouté ce que vous avez demandé
Merci. J'ai mis à jour ma question avec la solution complète qui a fonctionné.
OriginalL'auteur Nicolás Torres