我正在尝试一些简单的事情,即将一个变量设置为我已设置为非同步的 jquery ajax 调用的结果。
到目前为止,所有尝试都返回未定义,我不知道为什么。
我知道我不能使用同步调用,因为在返回结果之前代码会继续前进。
这是我的基本代码:
$(document).ready(function() {
var test = visitorData();
console.info(test);
});
和ajax调用:
function visitorData() {
var chartValues = [];
var chartLabels = [];
//console.info("chartValues:"+chartValues);
//return "TEST";
$.blockUI({message: '<h1><img src="/img/icons/icon_loading_red.gif" /> Please wait - grabbing data...</h1>'});
$.ajax({
url: '/visitdata',
type: 'GET',
async: false,
dataType: "json",
success: function (data) {
visitors = data;
console.warn(data);
for (var k in visitors){
if (typeof visitors[k] !== 'function') {
chartValues.push(visitors[k].average_order);
}
}
console.info(chartValues);
return chartValues;
}
});
}
在成功函数中获取值,并且 chartValues 在返回之前存在。但是原始调用没有数据。
不知道为什么以及我需要做什么?