如何使函数返回通过AJAX检索的数据

时间:2014-02-10 16:03:40

标签: javascript php jquery ajax symfony

在我的javascript文件中,我使用上面的函数来异步获取服务器计算的值:

function function2(userid)
    {
        $.ajax({
                        type: "POST",
                        url: "http://localhost/bghitn/web/app_dev.php/get_number_of_articles",
                        data:{id:userid},
                        cache: false,
                        success: function(data){

                          return data;      
                        }
                        });

    }

事实上,我在一组函数中调用了function2

function1();
var userid=.....
var x= function2(userid);
function3(x);

问题: 如您所见,function3使用function2返回的数据。但似乎function3在AJAX调用成功完成之前就开始执行了。我试图使用when函数,但徒劳无功。

$.when(function2(userid)).done(function(){
function3();
        });

如何在成功执行上一个AJAX请求后执行下一个javascript代码?您的建议非常值得赞赏。

1 个答案:

答案 0 :(得分:3)

选项1:您始终可以将AJAX调用设置为同步,但请等待响应时整个页面卡住。只需将参数async:false添加到您的参数集中。

选项2:提供回调或将未来的代码放入成功处理程序

选项3 :您可以使用此处所述的延期/承诺http://blog.mediumequalsmessage.com/promise-deferred-objects-in-javascript-pt1-theory-and-semantics