2015-03-09 1 views
0

J'ai un problème lors de la soumission du formulaire avec AJAX. J'utilise blockUI plugin pour bloquer l'interface utilisateur au cours des demandes AJAX et montrer le spinner de chargement avec "S'il vous plaît attendre ..." notification. Cela fonctionne parfaitement avec le type de requêtes UPDATE/INSERT INTO mais pendant SELECT, il n'apparaît même pas.Le fléau de chargement ne se déclenche pas pendant l'envoi d'un formulaire AJAX.

Au moment où je lié à beforeSend

beforeSend: function() { 
    $.blockUI({ message: '<img src="img/loading.gif"/> <br /> <h1>Please wait...</h1>' }); 
}, 

Je débloque sur le succès et je pense que c'est le problème parce que quand je l'ai vérifié sur le côté serveur, il prend soi-disant 0,0000 secondes pour exécuter cette requête encore Du côté de l'utilisateur, il y a un délai entre la soumission du formulaire et le remplissage de la div avec les résultats.

Y a-t-il un autre événement auquel je pourrais associer l'action de déblocage? J'ai essayé de le lier au document prêt mais puisque le contenu est généré avec AJAX cela ne fonctionne pas.

EDIT le code AJAX est la suivante

$("form#formID").submit(function(event){ 

     event.preventDefault(); 

     var formData = new FormData($(this)[0]); 

     var formURL = 'php/formURL.php'; 

     $.ajax({ 
      url: formURL, 
      type: 'POST', 
      data: formData, 
      async: false, 
      cache: false, 
      contentType: false, 
      processData: false, 
      beforeSend: function() { 
       $.blockUI({ message: '<img src="img/loading.gif"/> <br /> <h1>Please wait...</h1>' }); 
      }, 
      success: function (returndata) { 
       $.unblockUI(); 
       $("#div-result").html(returndata); 
      }, 
      error: function (returndata) { 
       $.unblockUI(); 
       $("#div-result").html(returndata); 
      }, 
     }); 

    return false; 
    }); 
+0

comment est votre demande ajax –

+0

je ne pense pas que cela importe parce que le code AJAX fonctionne comme prévu. Il semble que le problème est que la requête est exécutée trop rapidement pour que l'événement soit terminé immédiatement, mais il y a un retard du côté de l'utilisateur car il faut du temps pour remplir le div. Cependant j'ai collé le code de requête que j'utilise – vove

+0

dans ce cas vous changez l'ordre du rappel de succès ... '$ (" # div-result "). Html (returndata); $ .unblockUI(); ' –

Répondre

0

Utilisez ceci: -

$("form#formID").submit(function(event){ 


    $.blockUI({ message: '<img src="img/loading.gif"/> <br /> <h1>Please wait...</h1>' }); 

      event.preventDefault(); 

      var formData = new FormData($(this)[0]); 

      var formURL = 'php/formURL.php'; 

      $.ajax({ 
       url: formURL, 
       type: 'POST', 
       data: formData, 
       async: false, 
       cache: false, 
       contentType: false, 
       processData: false, 
       success: function (returndata) { 
        $.unblockUI(); 
        $("#div-result").html(returndata); 
       }, 
       error: function (returndata) { 
        $.unblockUI(); 
        $("#div-result").html(returndata); 
       }, 
      }); 

     return false; 
     }); 
+0

Comme la fonction de déblocage est encore lié à l'événement de succès, il n'a pas beaucoup changé: se débloque instantanément et j'attends que les résultats apparaissent . – vove

+0

Vous pouvez utiliser $ .unblockUI(); après $ ("# div-result"). html (returndata); Il sera débloqué après l'affichage de votre résultat. –