使用jsonp和jQuery时代码的执行顺序

时间:2011-12-28 12:50:30

标签: jquery jsonp

我正在使用jsonp和jQuery,它运行良好。但是代码的执行顺序并不是我所期望的。我的意思是我有一个功能:

function is_server_alive() {
    var result;
    console.log("beginning of function result" + result);
    $.ajax({
        url: server + "/is_alive",
        async: false, 
        dataType: "jsonp",
        jsonp: "callback",
        success: function(JSON){
            result = JSON.return;
            console.log("is_server_alive result: " + result);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            console.log("server is dead " + textStatus);
        },
    });
    console.log("end of function result: " + result);
    return result;
}

我尝试返回结果变量。但是由于ajax请求在所有事情发生之后我不能那样做。返回的值似乎未定义。控制台输出如:

beginning of function result: undefined
end of function result: undefined
is_server_alive result: 0

我尝试异步同时使用true / false并且没有任何改变。如何返回结果变量或更改执行顺序,使输出变为:

beginning of function result: undefined
is_server_alive result: 0
end of function result: 0

1 个答案:

答案 0 :(得分:0)

您可以向complete功能添加其他设置$.ajax

function is_server_alive() {
    var result;
    console.log("beginning of function result" + result);
    $.ajax({
        url         : server + "/is_alive",
        async       : false, 
        dataType    : "jsonp",
        jsonp       : "callback",
        success     : function(JSON){
            result  = JSON.return;
            console.log("is_server_alive result: " + result);
        },
        error       : function(XMLHttpRequest, textStatus, errorThrown){
            console.log("server is dead " + textStatus);
        },
        complete    : funciton () {
            console.log("end of function result: " + result);
            return result;
        }
    });

}