J'ai un formulaire avec un nom orderproductForm
et un nombre indéfini d'entrées.
Je veux faire une sorte de jQuery.get ou ajax ou quelque chose comme ça qui appelerait une page via Ajax, et enverrait toutes les entrées du formulaire orderproductForm
.
Je suppose qu'une façon serait de faire quelque chose comme
jQuery.get("myurl",
{action : document.orderproductForm.action.value,
cartproductid : document.orderproductForm.cartproductid.value,
productid : document.orderproductForm.productid.value,
...
Cependant, je ne connais pas exactement toutes les entrées du formulaire. Existe-t-il une fonctionnalité, une fonction ou quelque chose qui enverrait TOUTES les entrées du formulaire?
.ajaxSubmit()
/.ajaxForm()
ne sont pas des fonctions jQuery de base - vous avez besoin du plugin de formulaire jQueryCeci est une simple référence:
J'espère que ça t'aide.
la source
type: $(this).attr('method')
si vous utilisez l'method
attribut sur votre formulaire.Une autre solution similaire utilisant des attributs définis sur l'élément de formulaire:
la source
get
et l'URL actuelle respectivement. Pourrait faire avec l'ajout de cette hypothèse au code.Il y a quelques choses que vous devez garder à l'esprit.
1. Il existe plusieurs façons de soumettre un formulaire
Nous devons donc nous lier à l' événement de soumission du formulaire , et non à l'événement de clic de bouton. Cela garantira que notre code fonctionne sur tous les appareils et technologies d'assistance, maintenant et à l'avenir.
2. Hijax
L'utilisateur peut ne pas avoir activé JavaScript. Un modèle hijax est bon ici, où nous prenons doucement le contrôle du formulaire en utilisant JavaScript, mais le laissons soumis en cas d'échec de JavaScript.
Nous devons extraire l'URL et la méthode du formulaire, donc si le HTML change, nous n'avons pas besoin de mettre à jour le JavaScript.
3. JavaScript discret
L'utilisation de event.preventDefault () au lieu de renvoyer false est une bonne pratique car elle permet à l'événement de se propager. Cela permet à d'autres scripts de se lier à l'événement, par exemple des scripts d'analyse qui peuvent surveiller les interactions des utilisateurs.
La vitesse
Nous devrions idéalement utiliser un script externe, plutôt que d'insérer notre script en ligne. Nous pouvons créer un lien vers cela dans la section d'en-tête de la page en utilisant une balise de script, ou un lien vers celui-ci au bas de la page pour plus de rapidité. Le script devrait tranquillement améliorer l'expérience utilisateur, ne pas gêner.
Code
En supposant que vous êtes d'accord avec tout ce qui précède et que vous souhaitez intercepter l'événement de soumission et le gérer via AJAX (un modèle hijax), vous pouvez faire quelque chose comme ceci:
Vous pouvez déclencher manuellement une soumission de formulaire à tout moment via JavaScript en utilisant quelque chose comme:
Éditer:
J'ai récemment dû le faire et j'ai fini par écrire un plugin.
Ajoutez un attribut data-autosubmit à votre balise de formulaire et vous pouvez ensuite faire ceci:
HTML
JS
la source
Vous pouvez également utiliser FormData (mais non disponible dans IE):
Voici comment vous utilisez FormData .
la source
Version simple (n'envoie pas d'images)
Copiez et collez l'ajaxification d'un formulaire ou de tous les formulaires d'une page
Il s'agit d'une version modifiée de la réponse d' Alfrekjv
Javascript
Je voulais modifier la réponse d'Alfrekjv mais je m'en suis trop écartée, j'ai donc décidé de poster ceci comme une réponse distincte.
N'envoie pas de fichiers, ne prend pas en charge les boutons, par exemple en cliquant sur un bouton (y compris un bouton d'envoi) envoie sa valeur en tant que données de formulaire, mais comme il s'agit d'une demande ajax, le clic sur le bouton ne sera pas envoyé.
Pour prendre en charge les boutons, vous pouvez capturer le clic du bouton réel au lieu de la soumettre.
Côté serveur, vous pouvez détecter une requête ajax avec cet en-tête que jquery définit
HTTP_X_REQUESTED_WITH
pour phpPHP
la source
Ce code fonctionne même avec une entrée de fichier
la source
Array.from(new FormData(form))
itère sur cet itérateur de données de formulaire :)J'ai vraiment aimé cette réponse de superluminary et surtout la façon dont il est enveloppé est une solution dans un plugin jQuery . Merci donc au superluminaire pour une réponse très utile. Dans mon cas, cependant, je voulais un plugin qui me permettrait de définir les gestionnaires d'événements de réussite et d' erreur au moyen d'options lorsque le plugin est initialisé.
Voici donc ce que j'ai trouvé:
Ce plugin me permet "d'ajaxifier" très facilement les formulaires html sur la page et de fournir des gestionnaires d'événements onsubmit , success et error pour implémenter un feedback à l'utilisateur du statut du formulaire soumis. Cela a permis au plugin d'être utilisé comme suit:
Notez que les gestionnaires d'événements de réussite et d' erreur reçoivent les mêmes arguments que ceux que vous recevriez des événements correspondants de la méthode ajQuery jQuery .
la source
J'ai obtenu ce qui suit pour moi:
où
Cela suppose que le message à «url» renvoie un ajax sous la forme de
{success: false, error:'my Error to display'}
Vous pouvez varier cela à votre guise. N'hésitez pas à utiliser cet extrait.
la source
target
ici? Pourquoi soumettriez-vous un formulaire avec AJAX, uniquement pour rediriger vers une nouvelle page?jQuery AJAX soumettre un formulaire , n'est rien d'autre que soumettre un formulaire en utilisant l'ID de formulaire lorsque vous cliquez sur un bouton
Veuillez suivre les étapes
Étape 1 - La balise de formulaire doit avoir un champ ID
Bouton sur lequel vous allez cliquer
Étape 2 - soumettre l' événement est dans jQuery qui aide à soumettre un formulaire. dans le code ci-dessous, nous préparons la demande JSON à partir du nom de l' élément HTML .
pour une démonstration en direct, cliquez sur le lien ci-dessous
Comment soumettre un formulaire en utilisant jQuery AJAX?
la source
envisager d'utiliser
closest
la source
Je sais que c'est une
jQuery
question connexe, mais maintenant, avec JS ES6, les choses sont beaucoup plus faciles. Puisqu'il n'y a pas dejavascript
réponse pure , j'ai pensé que je pourrais ajouter unejavascript
solution pure simple à cela, qui à mon avis est beaucoup plus propre, en utilisant l'fetch()
API. C'est une façon moderne de mettre en œuvre les requêtes réseau. Dans votre cas, puisque vous avez déjà un élément de formulaire, nous pouvons simplement l'utiliser pour construire notre demande.la source
Pour éviter plusieurs envois de données de formulaire:
N'oubliez pas de dissocier l'événement de soumission, avant que le formulaire ne soit soumis à nouveau, l'utilisateur peut appeler la fonction sumbit plus d'une fois, peut-être qu'il a oublié quelque chose ou était une erreur de validation.
la source
Si vous utilisez le formulaire .serialize () - vous devez donner à chaque élément du formulaire un nom comme celui-ci:
Et le formulaire est sérialisé comme ceci:
la source
Vous pouvez l'utiliser sur la fonction d'envoi comme ci-dessous.
Formulaire HTML
Fonction jQuery:
Pour plus de détails et un exemple de visite: http://www.spiderscode.com/simple-ajax-contact-form/
la source
Ce n'est pas la réponse à la question d'OP,
mais si vous ne pouvez pas utiliser le formulaire statique DOM, vous pouvez également essayer comme ceci.
la source
Essayer
Afficher l'extrait de code
la source
Juste un rappel amical qui
data
peut aussi être un objet:la source
Javascript
HTML
la source
Il y a aussi l'événement submit, qui peut être déclenché comme ceci $ ("# form_id"). Submit (). Vous utiliseriez cette méthode si le formulaire est déjà bien représenté en HTML. Il vous suffit de lire la page, de remplir les entrées du formulaire avec des éléments, puis d'appeler .submit (). Il utilisera la méthode et l'action définies dans la déclaration du formulaire, vous n'avez donc pas besoin de les copier dans votre javascript.
exemples
la source