L'envoi de multiples formes de données via Ajax de jQuery
J'ai deux formulaires pour qui je veux envoyer les données via Ajax de jQuery appel. J'ai réussi à l'envoyer avec succès pour une forme, mais je ne suis pas capable d'envoyer les données à partir de deux d'entre eux par le même appel Ajax.
Mes formes sont:
<form id="filter-group1" method="post" name="filtergroup1">
<input type="checkbox" name="colour1" value="Value1" onclick="filterBy()" /><label>Option 1</label>
<input type="checkbox" name="colour2" value="Value2" onclick="filterBy()" /><label>Option 2</label>
<input type="checkbox" name="colour3" value="Value3" onclick="filterBy()" /><label>Option 3</label>
</form>
<form id="filter-group2" method="post" name="filtergroup2">
<input type="checkbox" name="size1" value="Value1" onclick="filterBy()" /><label>Option 1</label>
<input type="checkbox" name="size2" value="Value2" onclick="filterBy()" /><label>Option 2</label>
<input type="checkbox" name="size3" value="Value3" onclick="filterBy()" /><label>Option 3</label>
</form>
Et la fonction est:
function filterBy() {
var fgroup1 = document.filtergroup1;
var fgroup2 = document.filtergroup2;
var dataString1 = $(fgroup1).serialize();
var dataString2 = $(fgroup2).serialize();
var filterdata = [];
filterdata.push(dataString1,dataString2);
$.ajax( {
type: 'POST',
url: 'filter.php',
data: filterdata,
success: function(data) {
console.log(data);
$('#message').html(data);
}
});
}
J'ai ceci dans le fichier php:
echo var_export($_POST);
La fonction fonctionne très bien pour une forme si je remplace les données: avec
data: dataString1,
Je suis en train d'essayer d'obtenir le même résultat avec les données provenant des deux formes, mais je ne veux pas utiliser une fonction différente pour chaque formulaire.
J'apprécie toute l'aide. Merci.
OriginalL'auteur Valentin G. | 2013-10-06
Vous devez vous connecter pour publier un commentaire.
de jQuery
serialize()
méthode concatène vos valeurs d'entrée avec un "& "symbole - par conséquent, lorsque vous appuyez deux forme sérialisée de données, vous créez un tableau et pas concaténant les valeurs dans les deux formes avec "& " (qui est celui qui va être analysé correctement). Vous pouvez soit: (1) concaténer les éléments du tableau en une chaîne de caractères avec des "& " ou (2) l'utilisation$("#form1, #form2").serialize()
:[Modifier]: Sur une note de côté, je décourage fortement à l'aide de JavaScript en ligne. Vous devez séparer le contenu de la fonction. Au lieu de cela, utilisez la
.click()
fonction, comme:Je n'ai pas exactement comprendre le raisonnement derrière l'utilisation de deux formes distinctes...
OriginalL'auteur Terry
Vous êtes à l'aide d'un appel de fonction dans votre
filtergroup2
forme qui n'existe pas.filterBy2()
Je suppose doit êtrefilterBy()
Eh bien, le JavaScript semble fonctionner comme prévu par ce violon jsfiddle.net/bambattajb/ny6nQ. Quels sont les résultats de
print_r($_POST['data']);
dans votre fichier PHP?Les résultats sont les suivants: array ( 'undefined' => 'undefined')
OriginalL'auteur Joe Buckle