【问题标题】:How to get the result of a jQuery AJAX call then call another function如何获取 jQuery AJAX 调用的结果然后调用另一个函数
【发布时间】:2011-03-27 00:20:49
【问题描述】:

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

所以代码应该是这样的:

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

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

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

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

返回消息;

感谢您的帮助

【问题讨论】:

  • 您在 meder 的帖子中评论了尝试使用同一个 ajax 进行多个调用。你能扩展一下吗?

标签: ajax jquery call


【解决方案1】:

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

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

【讨论】:

    【解决方案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);
            }
        });
    }
    

    【讨论】:

    • 感谢您的回答,据我所知,这是一个异步/同步问题...我的目的是避免多次进行相同的 AJAX 调用,因为我对调用结果有几项不同的事情要做.所以我一直在寻找的方法是让 AJAX 函数被一个、两个或更多不同的函数调用......但据我所知,如果我需要保持异步模式,我需要以不同的方式来做。
    猜你喜欢
    • 2014-05-06
    • 1970-01-01
    • 2020-05-31
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2012-12-04
    相关资源
    最近更新 更多