如何获得jqueryajax调用的结果,然后调用另一个函数

如何获得jqueryajax调用的结果,然后调用另一个函数,ajax,jquery,call,Ajax,Jquery,Call,基本上,我试图调用一个函数(函数1),从另一个函数(函数2)得到结果。这个函数2正在进行一个ajax调用 所以代码是这样的: function f1 () { var results = f2(); } function f2() { $.ajax({ type: 'POST', url: '/test.php', success: function(msg){ } }); } 我知道是我在成功函数中显示

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

所以代码是这样的:

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

function f2() {
    $.ajax({
        type: 'POST',
        url: '/test.php',
        success: function(msg){
        }
    });
}
我知道是我在成功函数中显示了一个警报,我得到了结果。但是,我们如何才能使这个结果发回呢

我尝试在函数2中执行类似的操作,但没有成功:

返回味精


感谢您的帮助

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


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

您可以强制使请求同步(有点失去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);
        }
    });
}

谢谢你们的回答,伙计们,因为我知道这是一个异步/同步问题。。。我的目的是避免多次使用同一个AJAX调用,因为在调用结果上我有许多不同的事情要做。所以我想要的方法是让一个、两个或更多不同的函数调用AJAX函数。。。但据我所知,如果我需要保持异步模式,我需要以不同的方式来实现。您在meder的帖子中评论说,尝试使用相同的ajax进行多个调用。你能详细介绍一下吗?