2013-04-08 177 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); 
});