2011-03-03 114 views
0

我敢肯定这是一件非常简单的事情,但当我被困在这些东西时,我就是这么一个小孩......已经过了2个小时,我讨厌这个时候发生了什么:(jQuery返回未定义POST调用

这是为什么返回undefined?

function userExists(user) { 
$.post("misc/user_exists.php", {user: user}, 
     function(result) { 
      return '' + result + ''; 
     }); 
}); 

PHP文件将返回用户名完全正常,因为我看到它在从萤火虫的反应。但后来这个功能是没用的,当我做警示在调用它之后,它总是未定义的,是否返回字符串,布尔值等。

谢谢!

+0

是'result'不确定?或者'userExists(user)'的返回值未定义? – 2011-03-03 14:16:07

+0

Try:console.log(result); Firebug说什么? – 2011-03-03 14:17:40

+0

userExists(用户)的结果。结果是用户名存在的时候。 – luqita 2011-03-03 14:18:38

回答

6

$.post请求是异步的,所以当你运行return '' + result + '';它实际上没有将数据返回到任何地方。相反,从AJAX成功函数中触发一个不同的事件。

0

问题是返回将仅影响post方法中的ajax.sucess回调。试试这个:

function userExists(user, callback) //because this can be async, you need a callback... 
{ 
    $.post("misc/user_exists.php", {user: user}, 
    function(result) 
    { 
     if(callback) 
      callback(result) 
     return '' + result + ''; 
    }); 
}; 
userExists('someUser', function(result) 
{ 
    alert('' + result + '') 
}); 

或者,你可以确保呼叫不是异步:

function userExists(user) //because this can be async, you need a callback... 
{ 
    var res; 
    $.post("misc/user_exists.php", {user: user}, 
    function(result) 
    { 
     res = result; 
    }); 
    return res; 
}; 
$.ajax({async:false}); 
alert('' + userExists('someUser'+ '');  
-2

你可以这样做

function userExists(user) { 
    var username = ''; 
$.post("misc/user_exists.php", {user: user}, 
     function(result) { 

      username = result ; 
     }); 
    return username; 
}); 
+0

而不是未定义,则您将返回''。该调用是异步的。 – epascarello 2011-03-03 15:16:27