184 votes

Passer le formulaire entier en tant que données dans la fonction jQuery Ajax

J'ai une fonction ajax jQuery et je voudrais un formulaire entier en tant que données post. Nous mettons constamment à jour le formulaire, il est donc fastidieux de mettre à jour en permanence les entrées de formulaire à envoyer dans la requête.

320voto

Will Vousden Points 13332

Il y a une fonction qui fait exactement ceci:

http://docs.jquery.com/Ajax/serialize

 var data = $('form').serialize();
$.post('url', data);
 

27voto

nikola Points 1005

En général utiliser serialize() sur l'élément de formulaire.

S'il vous plaît être conscient que plusieurs de <select> options sont sérialisés en vertu de la même clé, par exemple

<select id="foo" name="foo" multiple="multiple">
    <option value="1">one</option>
    <option value="2">two</option>
    <option value="3">three</option>
</select>

le résultat sera une chaîne de requête qui contient plusieurs occurrences de la même paramètre de requête:

[path]?foo=1&foo=2&foo=3&someotherparams...

qui peut ne pas être ce que vous voulez dans le backend.

J'ai utiliser ce code JS pour réduire de plusieurs paramètres séparés par une virgule clé unique (copié sans vergogne à partir d'un commentaire de réponse dans un fil plus au John Resig):

function compress(data) {
    data = data.replace(/([^&=]+=)([^&]*)(.*?)&\1([^&]*)/g, "$1$2,$4$3");
    return /([^&=]+=).*?&\1/.test(data) ? compress(data) : data;
}

qui tourne le ci-dessus en:

[path]?foo=1,2,3&someotherparams...

Dans votre code JS vous souhaitez appeler comme ceci:

var inputs = compress($("#your-form").serialize());

Espérons que cela aide.

20voto

rahul Points 84185

Utilisation

sérialiser ()

 var str = $("form").serialize();
 

Sérialiser un formulaire en une chaîne de requête pouvant être envoyée à un serveur dans une requête Ajax.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X