如何从jquery ajax请求中获取返回数据?

时间:2010-05-25 04:40:31

标签: javascript jquery ajax api return-value

function isNewUsername(str){
    var result;
    $.post('/api/isnewusername', 
            {username:str},
            function(data) {
                result = data.result;
            }, 
            "json");
    return result;
}

所以,我的问题很简单,但我无法理解。我想从isnewusername函数访问结果。我很好奇答案,因为我花了1个小时。 谢谢

2 个答案:

答案 0 :(得分:2)

它不能像你那样做,因为ajax查询是异步的(意思是,它们不会阻塞,结果不会立即出现,它会在服务器实际响应时出现)。您必须使用结果调用另一个函数(或者,只有在实际可用时才对结果执行某些操作)。

例如:

function isNewUsername(str){
    $.post('/api/isnewusername', 
            {username:str},
            function(data) {
                someOtherFunction(data.result);
            }, 
            "json");
}

答案 1 :(得分:0)

作为使用jQuery post function的快速注释,您使用的是jQuery ajax function的简写形式,这意味着您正在进行异步调用。因此,只有在成功响应时,jQuery才会调用您的函数并将服务器端调用的结果放入成功回调的data参数中。

举例说明:

function isNewUsername(str){
    $.post('/api/isnewusername', 
            {username:str},
            function(data) {
                alert(data.result);
            }, 
            "json");
}

那表示您可以更改代码以指定a synchronous callback但是有可能锁定用户浏览器,直到返回请求为止。