2014-04-17 2 views
0

J'utilise le code suivant pour exécuter un fichier PHP en utilisant AJAX. cela fonctionne bien et comme il se doit.exécuter ajax après l'action de formulaire par défaut?

Cependant, la forme que le code AJAX est a un default action. par exemple <form action="index.php">

mon code AJAX est la suivante:

   <script> 
     $('#select').change(function(){ 
      var selectedValue = $(this).val(); 
      if (selectedValue === 'Yes') { 
        $(function(){ 
     $('form').submit(function(e){ 
     var thisForm = $(this); 
     //Prevent the default form action 
     e.preventDefault(); 
      //Post the form to the send script 
      $.ajax({ 
       type: 'POST', 
       url: 'mySecond.php', 
       data: thisForm.serialize(), 
       //Wait for a successful response 
     }); 
     }) 
    }); 
      } else { 

      } 
     }); 
</script> 

Je sais que e.preventDefault(); signifie qu'il va se débarrasser de l'action de formulaire par défaut et il n'exécutera l'appel AJAX. Donc, est-il possible d'exécuter à la fois AJAX et default form action? ou peut-être, l'un après l'autre?

P.S. J'ai enlevé le e.preventDefault(); et cela arrêtera l'appel AJAX!

toute aide serait appréciée.

Remerciements

+0

Vous ne pouvez pas exécuter à la fois AJAX et la 'forme par défaut action' depuis' formulaire par défaut action' rechargera la page en cours (ou rediriger vers une autre page) – hindmost

Répondre

1

Pas en tant que tel.

Vous ne pouvez pas effectuer l'action de formulaire par défaut, puis effectuez l'Ajax sans configurer la page qui est la réponse à la soumission de formulaire pour faire la demande Ajax lors de son chargement.

Vous ne pouvez pas effectuer la demande Ajax puis permettre la soumission du formulaire par défaut pour continuer parce que l'Ajax est asynchrone, il ne terminerait pas avant la soumission du formulaire déclenché.

Vous pouvez annuler l'action de formulaire par défaut, effectuer la requête Ajax puis (dans le gestionnaire de réponse pour la requête Ajax) soumettre le formulaire par programmation (en appelant sa méthode submit()).

Vous seriez probablement mieux d'utiliser la soumission de forme normale, comme une demande unique, pour effectuer les tâches et embêtez pas avec Ajax du tout bien.

+0

Cela est logique. une chance d'exemple? – user3454730

+0

'ref_to_form.submit()' – Quentin

+0

un peu plus de détails serait génial! où ça va? Qu'est-ce que ça veut dire? – user3454730

0

Je ne sais pas pourquoi would u faire cela, mais oui il y a un moyen:

<script> 
    var continue = true; 
    $('#select').change(function(){ 
     var selectedValue = $(this).val(); 
     if (selectedValue === 'Yes') { 
       $(function(){ 
       $('form').submit(function(e){ 
        var thisForm = $(this); 
        //Prevent the default form action 
        if(continue){ 
         e.preventDefault(); 

         //Post the form to the send script 
         $.ajax({ 
          type: 'POST', 
          url: 'mySecond.php', 
          data: thisForm.serialize(), 
          //Wait for a successful response 
          success: function(data){ 
            continue = false;  
            $(thisForm).submit(); 
          } 
         }); 
        } 
       }) 
      }); 
     } else { 

     } 
    }); 
</script> 
+0

il y a une erreur de syntaxe dans votre code. – user3454730

+0

Je n'ai pas le balisage et le code complet mais sur quelle ligne dit-elle l'erreur de syntaxe? probablement y arriver rapidement :) –

+0

première ligne. 'var continue = vrai;' – user3454730

0

Essayez ci-dessous. Faites l'appel ajax dans le rappel fait.

 <button id="btnSave" type="submit" formaction="Save">Save</button>   
    $('#btnSave').click(function (e) { 
var thisForm = $(this).closest(form).serialize(); 
       $.ajax({ 
        url: '#', 
        type: 'GET', 
        cache: false 
       }).done(function(result) { 
         CallMySecond(thisForm);   
       });    

     }); 
function CallMySecond(data){ 
$.ajax({ 
       type: 'POST', 
       url: 'mySecond.php', 
       data: thisForm.serialize() 
}); 
} 
Questions connexes