非同期に設定した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;
}
});
}
値は success 関数で取得されており、戻り値の前に chartValues が存在します。ただし、元の呼び出しにはデータが提供されません。
なぜ、何をする必要があるのか わかりませんか?