如何获取jQuery AJAX调用的结果然后调用另一个函数

时间:2010-08-08 18:11:34

标签: ajax jquery call

基本上我试图调用一个函数(函数1),它从另一个函数(函数2)得到结果。这个函数2正在进行ajax调用。

所以代码就像这样:

function f1 () {
    var results = f2();
}

function f2() {
    $.ajax({
        type: 'POST',
        url: '/test.php',
        success: function(msg){
        }
    });
}

我知道我在成功功能中显示警报,我得到了结果。但是我们怎样才能让这个结果被发回?

我试图在功能2中做这样的事情但没有成功:

return msg;

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

理论上,这可以使用jQuery的async: false设置。该设置使调用同步,即浏览器等待直到完成。

但这被认为是不好的做法,因为它可以冻结浏览器。您应该重新构建脚本,以便在success回调而不是f1中执行相关操作。我知道这不如你在f1()中所做的那么方便,但它是处理Ajax异步性质的正确方法。

答案 1 :(得分:2)

你可以强制使请求同步(有点失去ajax的好处)但是让代码工作:

function f2() {
    var ret = false;
    $.ajax({
        type: 'POST',
        url: '/test.php',
        async:false,
        success: function(msg){
           ret = msg
        }
    });
    return ret;
}

否则,如果要保持异步,则必须在success函数中添加回调..

function f2() {
    $.ajax({
        type: 'POST',
        url: '/test.php',
        async:false,
        success: function(msg){
           doSomething(msg);
        }
    });
}