2013-03-28 128 views
0

函數rk()從Ajax調用中返回隨機密鑰,參數l代表長度。我的問題是如何從Ajax結果中獲取我的「k」變量的返回值?jQuery Ajax返回值不起作用

var k = rk(6); 

function rk(l) { //l stands for length 
    $.ajax({ 
     url : 'ajax_lib.php', 
     type : 'POST', 
     data : 'k=1&l=' + l, 
     success : function(r) { 
      return r; 
     }      
    });    
} 

回答

2

Ajax使用異步處理,意味着一旦請求被髮送到服務器,它將繼續執行剩餘的語句而不用等待響應。

所以你的情況,一旦請求被髮送到服務器,rk返回undefined(因爲沒有return語句)值的變量k會有價值undefined

爲了解決這個問題,使用由$就

rk(6).done(function(r){ 
    //do what ever you want to do with r 
}); 

function rk(l) { //l stands for lenght   

    return $.ajax({     
     url : 'ajax_lib.php',     
     type : 'POST',     
     data : 'k=1&l=' + l     
    }); 

} 
+0

+1獲得積分 –

0

返回promise對象的解決方案是

function rk(myVariable, l) { //l stands for lenght   

    $.ajax({     
     url : 'ajax_lib.php',     
     type : 'POST',     
     data : 'k=1&l=' + l,    
     success : function(r) {    
      myVariable = r; 
     }         
    }); 

} 

,而不是調用r=rk(l) ,並且可以調用rk(r, l)

+0

謝謝各位! Arun P Johny,你的榜樣適合我 –