163 votes

Comment capturer la réponse de form.submit

J'ai le code suivant:

 <script type="text/javascript">
        function SubmitForm()
        {

            form1.submit();
        }

        function ShowResponse()
        {

        }
</script>
.
.
.
<div>
    <a href="#" onclick="SubmitForm();">Click</a>
</div>
 

Je veux capturer la réponse HTML de form1.submit ? Comment puis-je faire cela? Puis-je enregistrer une fonction de rappel dans la méthode form1.submit?

134voto

nickf Points 185423

Vous ne serez pas en mesure de le faire facilement avec du javascript. Lorsque vous validez un formulaire, les entrées d'un formulaire sont envoyées au serveur et votre page est actualisée - les données sont traitées sur le côté serveur. Qui est, l' submit() fonction ne retourne rien, il se contente d'envoyer les données du formulaire au serveur.

Si tu voulais vraiment obtenir la réponse en Javascript (sans actualisation), puis vous aurez besoin d'utiliser AJAX, et quand vous commencez à parler à l'aide d'AJAX, vous aurez besoin d'utiliser une bibliothèque. jQuery est de loin le plus populaire, et mon favori personnel. Il y a un plugin pour jQuery appelé Formulaire qui permettra de faire exactement ce qu'il sonne comme vous le souhaitez.

Voici comment vous pouvez utiliser jQuery et du plugin:

$('#myForm')
    .ajaxForm({
        url : 'myscript.php', // or whatever
        dataType : 'json',
        success : function (response) {
            alert("The server says: " + response);
        }
    })
;

67voto

Ates Goral Points 47670

Une alternative Ajax consiste à définir un <iframe> invisible comme cible de votre formulaire et à lire le contenu de ce <iframe> dans son gestionnaire onload . Mais pourquoi s'embêter quand il y a Ajax?

Remarque: je voulais simplement mentionner cette alternative, car certaines réponses affirment qu'il est impossible d'y parvenir sans Ajax.

37voto

rajesh_kw Points 162

Je le fais de cette façon et ça marche.

 $('#form').submit(function(){
    $.ajax({
      url: $('#form').attr('action'),
      type: post,
      data : $('#form').serialize(),
      success: function(){
        console.log('form submitted.');
      }
    });
    return false;
});
 

12voto

Sergio Points 5161

Je ne suis pas sûr que vous compreniez ce que submit () fait ...

Lorsque vous effectuez form1.submit(); les informations du formulaire sont envoyées au serveur Web.

Le serveur Web fera tout ce qu'il est censé faire et renverra une nouvelle page Web au client (généralement la même page avec quelque chose de modifié).

Donc, vous ne pouvez pas "attraper" le retour d'une action form.submit ().

6voto

Diodeus Points 67946

Il n'y a pas de rappel. C'est comme suivre un lien.

Si vous souhaitez capturer la réponse du serveur, utilisez AJAX ou publiez-la sur une iframe et récupérez ce qui y apparaît après l'événement onload() l'iframe.

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