8
votes

Comment attendre la réponse JQuery Ajax avant de choisir la condition

$.ajax({
    type: "POST",
    url: "/webservice/user.asmx/CheckForm",
    data: "{'type':'" + var_type + "', 'value':'" + var_value + "'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    error: function (XMLHttpRequest, textStatus, errorThrown) { },
    success: function (data) {
        var obj = data.d;
    }
});

0 commentaires

4 Réponses :


8
votes

Vous devez le faire dans le rappel de l'appel Ajax - comme ceci:

$.ajax({
    type: "POST",
    url: "/webservice/user.asmx/CheckForm",
    data: "{'type':'" + var_type + "', 'value':'" + var_value + "'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    error: function (XMLHttpRequest, textStatus, errorThrown) {
      console.log('error');
    },
    success: function (data) {
      console.log('here');
    }
});


1 commentaires

Correct. L'utilisation de Callbacks est un must lors de la programmation JavaScript & Ajax.



17
votes

Essayez de paramétrer async à FALSE: ( Voir Edition ci-dessous ) xxx

Ceci fera la Ajax Call Blocking de sorte que le navigateur attendra la fin de la fin de la poursuite. Bien sûr, je ne suis toujours pas sûr de la manière dont cela se rapporte au Boolean étant contrôlé dans le parent conditionnel. Peut-être qu'il y a de code que vous ne nous montrez pas ...


EDIT: :::: SIGH :::::: J'étais jeune et stupide quand j'ai posté cette réponse, et En fait, j'avais oublié tout à ce sujet. Je garde les informations ci-dessus inchangées à des fins historiques (puisqu'il semble avoir aidé certaines personnes, ou du moins ils le pensent), mais comprennent que c'est pas une approche correcte < /strong>.

Emballage asynchrone des appels asynchrones Les exécutions synchrones et bloquantes sont de toutes les voies incorrectes. Ne le fais pas. Au lieu de cela, structurer la logique pour répondre aux opérations asynchrones. Dans le cas de cette question, des appels à console.log () devraient se produire dans le gestionnaire de succès (ou d'erreur) de l'appel AJAX, non pas dans le code après l'invocation de cet appel.

0 commentaires

1
votes

Ouais, vous mettez le conditionnel à l'intérieur de la fonction de réussite.

 success: function (data) { if (...) { } else { }         

var obj = data.d;
    }


0 commentaires

1
votes

où vous définissez boolerror = true ?? dats pourquoi il renvoie toujours ici ;

u doit changer la logique comme celle-ci dans de la référence xxx


0 commentaires