Pourquoi mon formulaire jquery ajax est-il soumis une fois, une première fois, deux fois une seconde fois…?

J’ai un simple formulaire AJAX qui fonctionne comme il se doit lorsque je le soumets. Cependant, si je saisis ensuite de nouvelles données dans le même formulaire (sans actualiser la page), le formulaire est envoyé deux fois. Si je le fais une troisième fois, le formulaire est envoyé trois fois, et ainsi de suite. Pourquoi ça fait ça? Voici mon code:

$(document).ready(function(){ $("#myForm").submit(function() { var myField = $('#myID).val(); $.ajax({ type: "POST", url: 'myFile.php', dataType: 'html', data: {myData:myField}, success: function(data){ alert(data); } }); return false; }); }); 

Même si je me suis retrouvé confronté au même problème lors du développement d’un formulaire de connexion AJAX. Après quelques heures passées à googler, j’ai trouvé une solution. J’espère que cela devrait vous aider.

Fondamentalement, vous devez dissocier l’instance actuelle de l’action submit du formulaire une fois votre demande ajax complétée. Alors ajoutez cette ligne avant de retourner false;

 $("#myform").unbind('submit'); 

Par conséquent, tout votre code devrait ressembler à

 $(document).ready(function(){ $("#myForm").submit(function() { var myField = $('#myID).val(); $.ajax({ type: "POST", url: 'myFile.php', dataType: 'html', data: {myData:myField}, success: function(data){ alert(data); } }); /* Add this line */ $("#myform").unbind('submit'); return false; }); });
$(document).ready(function(){ $("#myForm").submit(function() { var myField = $('#myID).val(); $.ajax({ type: "POST", url: 'myFile.php', dataType: 'html', data: {myData:myField}, success: function(data){ alert(data); } }); /* Add this line */ $("#myform").unbind('submit'); return false; }); }); 

J’ai eu le même problème.

J’ai trouvé la solution dans: jQuery: soumettre un formulaire deux fois

Basicaly ajoute .submit () à la réponse de Saurabh Mishra:

 $('#form1').unbind('submit').submit(); 

La suppression de la forme peut vous casser Ajax. J’ai trouvé cela aussi longtemps que je déclare le formulaire en premier.

 $('#my_form').ajaxForm 

que tout fonctionne comme prévu et respecte le protocole standard. Je viens de passer une journée à chasser l’erreur de «modèle manquant» dans la soumission du formulaire parce que je délie le formulaire.