2013-04-08 225 views
0

我这样的代码我怎样才能得到

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); 

JavaScript函数的返回值的问题是,当我在浏览器中运行它,它总是拳头警报undefined,则提醒的返回值;似乎不能得到函数checkReg的返回值。我很困惑,我该怎么办?

+0

你将不得不从内部处理值'$ .getJSON'是它异步。你的'return'从getJSON'的回调函数返回,而不是'checkReg' – tpbowden 2013-04-08 10:24:01

回答

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); 
    }); 
+0

非常感谢:) – wengcan 2013-04-08 12:04:57

0

你不能这么做......因为Ajax ashynchronus ......通过成功函数被调用的时间和回报,警报将因此被称为具有温度为未定义或空..做的一种方式这是在帮你需要被召回的getJSON的成功里面的东西......或者使用$.deffered或callinga 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); 
});