我的代码就像这样
var key,value;
//……some code……
function checkReg(i,j){
$.getJSON(api_checkExists,{"k":i,"v":j,"rand":Math.random()},function(c){
alert(c.status);
return(c.status);
});
}
var temp=checkReg(key,value);
alert(temp);
问题是当我在浏览器中运行它时,它始终会提示未定义然后提醒返回值;似乎无法获得函数checkReg的返回值。我很困惑,我该怎么办?
答案 0 :(得分:4)
那是因为你的ajax调用正在从其余部分运行异步。在ajax被触发之前,您的代码已经返回。
因此返回不起作用,你应该为你的函数提供一个回调,而不是试图返回它。
function checkReg(i,j, callback){
$.getJSON(api_checkExists,{"k":i,"v":j,"rand":Math.random()},function(c){
alert(c.status);
callback(c.status);
});
}
checkReg(key,value, function(temp){
alert(temp);
});
答案 1 :(得分:0)
你不能这样做...因为ajax是ashynchronus ...当调用success函数并返回时,将调用警报,因此将temp定义为undefined或empty ..一种方法是执行此操作你需要在getJSON后面调用成功的东西...或者使用$.deffered或者调用calback函数..
function checkReg(i,j, callback){
$.getJSON(api_checkExists,{"k":i,"v":j,"rand":Math.random()},function(c){
callback(c.status);
});
}
checkReg(key,value, function(temp){
alert(temp);
});