我怎样才能获得javascript函数的返回值

时间:2013-04-08 10:20:40

标签: javascript jquery

我的代码就像这样

    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的返回值。我很困惑,我该怎么办?

2 个答案:

答案 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);   
});