函数与ajax请求返回空结果

时间:2017-06-01 07:16:58

标签: javascript php jquery ajax

我有一个包含ajax请求的函数,我希望此函数返回ajax请求的结果。这是功能:

    function get_the_posts(cat) {

        var table = [];

        $.ajax({
            type : 'GET',
            url : get_all_the_posts + '?cat=' + cat
        }).done(function(data){
            table = data.table;
            console.log(table); // (1) There is what I need and it works
        });
        console.log(table); // (2) but there is an empty table

        return table; // empty result
   }

我知道ajax是异步的,这意味着发送请求(或者更确切地说是接收响应)是从正常的执行流程等中取出的,这就是为什么我的第一个console.log()在第二个之后显示的原因一。但是我不知道如何返回由ajax请求返回的数据填充的表格...我试图将return放在.done内但它不起作用...

是的,有人能帮帮我吗? 感谢

1 个答案:

答案 0 :(得分:0)

你应该研究承诺的概念。您正在使用jQuery,因此您可以查看:https://api.jquery.com/category/deferred-object/

基本上你想要的是返回一个承诺,你将返回ajax调用的结果(你在另一个函数中调用它),然后你可以使用结果。

例如:

$.when(get_the_post).then(do_something_with_it);

因此,不是返回表,而是返回 promise ,而在函数do_something_with_it()中,您将使用结果。