我正在使用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());
});
答案 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()中加入。