我正在使用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
答案 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;
}
});
}