2012-08-06 3 views
0

J'ai cette fonction ajax qui valide la clé fournie par l'utilisateur. mais l'alerte est avant que la réponse ajax et en raison de laquelle, si l'utilisateur fournit une mauvaise clé peut même avoir accèsL'alerte arrive avant la réponse

$(document).ready(function() { 
    $('#submit').click(function(e) { 
     e.preventDefault(); 
     var key = $('#downloadkey').val(); 
     var dataString = {KEY:key}; 
     $.ajax({ 
      url: "/mediabox/home/validate_key", 
      type: 'POST', 
      data: dataString, 

      success: function(msg) { 
       if(msg=="true") 
       { 
        alert("do something"); 
       } 
       else 
       { 
        alert("Your download key is either wrong or you didn't provide it."); 
        return false; 
       }       

      } 
     }); 

    }); 
}); 

enter image description here

+1

** Quoi? ** Je suis tout à fait confus .... – Neal

+0

avec ce code, l'alerte ne viendra que lorsque ce rappel succès exécuté (quand il obtient une réponse de la page du serveur) – Shyju

+0

Croyez-moi quand je soumets le Je reçois soudainement l'alerte et pendant que l'alerte est sur mon écran, je peux voir que l'appel ajax n'est toujours pas terminé et la réponse est vide quand je clique sur ok sur l'alerte puis je vois la réponse –

Répondre

0

Qu'est-ce qui vous fait croire l'alerte est venue avant que la réponse? Le gestionnaire de succès n'est invoqué qu'une fois que la réponse a été reçue avec succès côté client.

Pour confirmer, vous pouvez modifier votre gestionnaire de succès pour enregistrer la réponse:

success: function(msg) { 
    console.log(msg); 
    if(msg=="true") 
    { 
     alert("do something"); 
    } 
    else 
    { 
     alert("Your download key is either wrong or you didn't provide it."); 
     return false; 
    }       
} 

De plus, si vous utilisez le return false de refuser l'accès à l'utilisateur en bloquant l'action HTML, ne sera pas travailler en raison de la nature asynchrone d'AJAX.

0

La fonction success est appelée lorsque la requête est terminée.

succès (données, textStatus, jqXHR) Fonction, Array

Une fonction à appeler si la demande réussit. La fonction passe trois arguments : Les données renvoyées par le serveur, formatées selon le paramètre dataType; une chaîne décrivant le statut; et l'objet jqXHR (dans jQuery 1.4.x, XMLHttpRequest). À partir de jQuery 1.5, le paramètre de réussite peut accepter un ensemble de fonctions. Chaque fonction sera appelée à tour de rôle. Ceci est un événement Ajax.

Le code dans le gestionnaire de succès ne s'exécutera qu'une fois la requête AJAX terminée. Si vous recevez une alerte avant la main, cela indique que la requête s'est correctement déroulée.

Questions connexes