2013-03-28 68 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,你的榜样适合我 –