Maison > interface Web > js tutoriel > Comment puis-je soumettre deux formulaires simultanément avec un seul bouton ?

Comment puis-je soumettre deux formulaires simultanément avec un seul bouton ?

Barbara Streisand
Libérer: 2024-11-26 01:07:11
original
242 Les gens l'ont consulté

How Can I Submit Two Forms Simultaneously with a Single Button?

Soumettre deux formulaires avec un seul bouton

Soumettre deux formulaires avec un seul bouton peut sembler une tâche simple, mais ce n'est pas possible en utilisant les méthodes traditionnelles. méthodes de soumission de formulaire. En effet, la soumission d'un formulaire permet de quitter la page actuelle vers l'action spécifiée dans le formulaire.

La solution : soumission de formulaire asynchrone

Pour soumettre les deux formulaires simultanément, nous devons contourner le processus traditionnel de soumission de formulaires. Nous pouvons y parvenir en soumettant le premier formulaire de manière asynchrone via JavaScript, ce qui nous permet de soumettre le deuxième formulaire sans interférer avec le premier.

Soumission du formulaire asynchrone JavaScript :

Le Le code JavaScript suivant montre comment soumettre le premier formulaire de manière asynchrone :

var f = document.forms.updateDB;
var postData = [];
for (var i = 0; i < f.elements.length; i++) {
    postData.push(encodeURIComponent(f.elements[i].name) + "=" +
        encodeURIComponent(f.elements[i].value));
}
var xhr = new XMLHttpRequest();
xhr.open("POST", "mypage.php", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(postData.join("&"));
Copier après la connexion

Une fois le premier formulaire soumis de manière asynchrone, nous pouvons immédiatement soumettre le deuxième formulaire en utilisant la méthode submit() du formulaire standard :

document.forms.payPal.submit();
Copier après la connexion

Solution mise à jour (2023) :

La solution mise à jour utilise fetch () et syntaxe JavaScript moderne :

function submitBothForms() {
    const { updateDB, payPal } = document.forms;
    fetch(updateDB.action, {
        method: updateDB.method,
        headers: { "content-type": updateDB.enctype },
        body: new FormData(updateDB),
    });

    payPal.submit();
}
Copier après la connexion

Cette solution mise à jour offre une implémentation plus concise et plus performante par rapport à l'original réponse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal