Je souhaite soumettre un formulaire à l'aide de jQuery. Quelqu'un peut-il fournir le code, une démo ou un exemple de lien?
Cela dépend si vous soumettez le formulaire normalement ou via un appel AJAX. Vous pouvez trouver de nombreuses informations sur jquery.com , y compris de la documentation avec des exemples. Pour soumettre un formulaire normalement, consultez la submit()
méthode sur ce site. Pour AJAX , il existe de nombreuses possibilités différentes, bien que vous souhaitiez probablement utiliser les méthodes ajax()
ou post()
. Notez que post()
c'est vraiment juste un moyen pratique d'appeler la ajax()
méthode avec une interface simplifiée et limitée.
Une ressource critique, que j'utilise tous les jours, que vous devriez mettre en signet est Comment fonctionne jQuery . Il contient des tutoriels sur l'utilisation de jQuery et la navigation de gauche donne accès à toute la documentation.
Exemples:
Ordinaire
$('form#myForm').submit();
AJAX
$('input#submitButton').click( function() {
$.post( 'some-url', $('form#myForm').serialize(), function(data) {
// ... do something with response from server
},
'json' // I expect a JSON response
);
});
$('input#submitButton').click( function() {
$.ajax({
url: 'some-url',
type: 'post',
dataType: 'json',
data: $('form#myForm').serialize(),
success: function(data) {
// ... do something with the data...
}
});
});
Notez que les méthodes ajax()
et post()
ci-dessus sont équivalentes. Il existe des paramètres supplémentaires que vous pouvez ajouter à la ajax()
demande pour gérer les erreurs, etc.
$.post
et reconstruisent explicitement le formulaire pour générer des données à soumettre. Merci!$('form#MyForm').serialize() + '&newData=' + newData + '&moreData=' + moreData
. Remarque: les deux derniers peuvent avoir besoin d'être encodés en url à l'aide deencodeURIComponent()
. OU - vous pouvez changer pour utiliser le codage JSON aux deux extrémités, mais vous devez ensuite placer les données du formulaire dans une structure de données JavaScript avec vos données supplémentaires et les sérialiser. Dans ce cas, vous utiliseriez probablementserializeArray
le formulaire et fusionneriez vos autres données.Vous devrez utiliser
$("#formId").submit()
.Vous appelez généralement cela à partir d'une fonction.
Par exemple:
Vous pouvez obtenir plus d'informations à ce sujet sur le site Web de Jquery .
la source
lorsque vous avez un formulaire existant, cela devrait maintenant fonctionner avec jquery - ajax / post maintenant vous pouvez:
faites vos propres trucs
Veuillez noter que pour que la
serialize()
fonction fonctionne dans l'exemple ci-dessus, tous les éléments du formulaire doivent avoir leurname
attribut défini.Exemple de formulaire:
@PtF - les données sont soumises à l'aide de POST dans cet exemple, ce qui signifie que vous pouvez accéder à vos données via
, où dataproperty1 est un "nom de variable" dans votre json.
voici un exemple de syntaxe si vous utilisez CodeIgniter:
la source
Dans jQuery, je préférerais ce qui suit:
Mais là encore, vous n'avez vraiment pas besoin de jQuery pour effectuer cette tâche - utilisez simplement du JavaScript normal:
la source
Tiré du manuel: jQuery Doc
la source
Pour information
si quelqu'un utilise
Ne pas quelque chose comme ça
Il m'a fallu plusieurs heures pour découvrir que submit () ne fonctionnerait pas ainsi.
la source
"sumit"
permet pas de savoir si la faute de frappe n'est pas intentionnelle dans la réponse ou si elle était liée au problème. Voulez-vous dire qu'un bouton nommé"submit"
gâche le formulaire jquery submit ()? Ou voulez-vous dire que le problème était que vous avez donné le nom du bouton soumettre au lieu de la normetype="submit"
?Utilisez-le pour soumettre votre formulaire en utilisant jquery. Voici le lien http://api.jquery.com/submit/
la source
button
à votre bouton pour garantir que le formulaire ne sera pas envoyé (car tous les navigateurs ne traitent pas les boutons sans type de la même manière).cela enverra un formulaire avec préchargeur:
j'ai une astuce pour faire un post de données de formulaire réformé avec une méthode aléatoire http://www.jackart4.com/article.html
la source
Voir les événements / soumettre .
la source
Notez que si vous avez déjà installé un écouteur d'événement submit pour votre formulaire, l'appel interne à submit ()
ne fonctionnera pas car il essaie d'installer un nouvel écouteur d'événements pour l'événement d'envoi de ce formulaire (qui échoue). Vous devez donc accéder à l'élément HTML lui-même (décompresser de jQquery) et appeler directement submit () sur cet élément:
la source
Vous pouvez également utiliser le plugin de formulaire jquery pour soumettre en utilisant ajax aswell:
http://malsup.com/jquery/form/
la source
la source
Notez que dans Internet Explorer, il existe des problèmes avec les formulaires créés dynamiquement. Un formulaire créé comme celui-ci ne sera pas soumis dans IE (9):
Pour le faire fonctionner dans IE, créez l'élément de formulaire et attachez-le avant de le soumettre comme ceci:
Créer le formulaire comme dans l'exemple 1, puis le joindre ne fonctionnera pas - dans IE9, il génère une erreur JScript
DOM Exception: HIERARCHY_REQUEST_ERR (3)
Accessoires à Tommy W @ https://stackoverflow.com/a/6694054/694325
la source
Jusqu'à présent, les solutions nécessitent que vous connaissiez l'ID du formulaire.
Utilisez ce code pour soumettre le formulaire sans avoir besoin de connaître l'ID:
Par exemple, si vous souhaitez gérer l'événement de clic pour un bouton, vous pouvez utiliser
la source
Si le bouton est situé entre les balises du formulaire, je préfère cette version:
la source
vous pouvez l'utiliser comme ceci:
OU
la source
Astuce IE pour les formulaires dynamiques:
la source
Mon approche légèrement différente Changez le bouton en bouton de soumission, puis cliquez sur
la source
Il affichera les données du formulaire sur votre nom de fichier donné via AJAX.
la source
Je recommande une solution générique pour que vous n'ayez pas à ajouter le code pour chaque formulaire. Utilisez le plugin de formulaire jquery (http://jquery.malsup.com/form/) et ajoutez ce code.
la source
vous pouvez le faire comme ceci:
la source
J'ai également utilisé ce qui suit pour soumettre un formulaire (sans le soumettre) via Ajax:
la source