查询发布ajax后不返回值

时间:2014-04-13 11:22:37

标签: jquery ajax json

我正在使用Query POST AJAX从数据库中获取数据。问题是函数没有返回任何值。这是我的代码。

var graph = {
        _ds2: [],
        display_graph: function(){
            graph._data = [];
            _data = "class=graph&func=get_all";
            $.post(window.location.href, {async: false}, _data, function(data){ 
                var data = $.parseJSON(data);
                //console.log(data)   
                for (var i = data.length - 1; i >= 0; i--) {
                    _ds1 = [];
                    _ds1.push(parseInt(data[i]['year']), parseInt(data[i]['income']));
                    graph._data.push(_ds1);
                };
               ///graph.create_graph(graph._ds2.reverse());
               //return graph._data;
            });
            return graph._data;
        }

}

我这样调用这个函数。

$(document).ready(function(){  
        /* graph 1*/
        console.log(graph.display_graph()); 
    }); 

1 个答案:

答案 0 :(得分:0)

您正在返回var而不等待ajax完成。在应用程序读取帖子后立即执行return但ajax尚未完成。我建议你使用这样的回调:

function foo(){

    fooAjax(function(data){ console.log(data) } //data is the data retrieved by the ajax
}

fooAjax(callback){

    $.ajax({
           success: function(response) {
               callback(response)
           });
}

传递给fooAjax的参数是回调函数,它类似于"""""""""""函数作为参考传递。

成功已弃用,但仍在使用(现在我们可以使用.done())。另一种方法是使用延迟对象:它们就像是本地传递给Ajax的对象,你可以在Ajax .done()中加入。