6
votes

Fonction de sortie jQuery dans l'appel d'Ajax

existe-t-il un moyen de quitter une fonction, en fonction du résultat d'un obtenir la demande code>.

Par exemple, dans la fonction ci-dessous, hi code>, si le Obtenir CODE> Résultats dans Data ​​CODE>, où DATA === '1' code>, je veux quitter la fonction. P>

function hi () {
    $.ajax({
        url: "/shop/haveItem",
        type: "GET",
        success: function (data) {
            if (data == '1') {
                // exit hi() function
            }
        }
    });
    // some executable code when data is not '1'
}


0 commentaires

4 Réponses :


0
votes

Une chose que vous pouvez faire est d'avoir une variable de drapeau. Attribuez-le à vrai ou faux, selon si vous souhaitez quitter ou non.

function hi()
{
var flag=false;    
$.ajax({
            url: "/shop/haveItem",
            type: "GET",
            async:false,
            success: function(data){
                if(data == '1')
                    flag=true;
            }
        });
if ( flag ) return;
    //some executable code when data is not '1'
    ...
}


2 commentaires

Faire un appel Ajax asynch peut ne pas être la meilleure solution. Il bloquera la demande de la durée de l'appel AJAX


À moins que l'async faux, la variable FALG ne peut pas attraper la valeur de retour d'Ajax. Mais je pense aussi que je ferais mieux de trouver une autre solution



9
votes

Je pense que la solution peut être quelque chose comme ceci xxx

si une fonction AJAX, vous devez toujours travailler avec des fonctions de rappel. Si vous faites une fonction AJAX synchrone, le navigateur sera bloqué pendant la durée de l'appel Ajax. Ce qui signifie que l'application restera non réactive pendant la durée de l'appel.


1 commentaires

Désolé, une copie erreur je pense, je vais le supprimer



0
votes

Créer une variable de drapeau global, je pense travaillerait le meilleur. Testé et fonctionnant !!

window.flag = [];

function hi()
{
    $.ajax({
        url: "/shop/haveItem",
        type: "GET",
        async:false,
        success: function(data){
            if(data == '1')
                flag = true;
        }
    });

    if (flag) {
        return false; 
    }


//some executable code when data is not '1'
...
}


0 commentaires

2
votes

Vous devriez pouvoir retourner false pour simuler "sortie".

function hi()
{
    $.ajax({
            url: "/shop/haveItem",
            type: "GET",
            async:false,
            success: function(data){
                if(data == '1')
                    return false
            }
        });

    //some executable code when data is not '1'
    ...
}


1 commentaires

Je pense que c'est l'une des meilleures réponses. Cela fonctionne et c'est simple.