ajax调用中的jquery exit函数

时间:2010-12-23 05:38:59

标签: javascript jquery

是否有办法退出函数,具体取决于GET请求的结果。

例如,在下面的函数hi中,如果GET导致data,其中data === '1',我想退出该函数。

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'
}

我怎样才能完成这项工作?

4 个答案:

答案 0 :(得分:9)

我认为解决方案可以是这样的

function hi () {
    $.ajax({
        url: "/shop/haveItem",
        type: "GET",
        success: function (data) {
            if (data == '1') {
                ifData1();
            } else {
                ifDataNot1()
            }
        }
    });
}
function ifData1 () { /* etc */ }
function ifDataNot1 () { /* etc */ }

如果你有一个ajax函数,你应该总是使用回调函数。如果使ajax函数同步,则浏览器将在ajax调用期间被阻止。这意味着在通话期间应用程序将保持无响应状态。

答案 1 :(得分:1)

你应该能够返回false来模拟“退出”。

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'
    ...
}

答案 2 :(得分:0)

你可以做的一件事是拥有一个标志变量。将其分配为true或false,具体取决于您是否要退出。

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'
    ...
}

答案 3 :(得分:0)

创建一个全局标志变量我认为最好。经过测试和工作!!

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'
...
}