我正在使用以下代码片段将一个双打java数组返回给另一个javascript函数。
var getCredits = (function() {
console.log('Getting credits');
$.ajax({
type : 'GET',
url : rootURL+"/getCredits",
dataType : "json", // data type of response
success : function(data){
var array = [];
console.log('Credits data = '+data);
for(var x in data){
console.log('x = '+data[x]);
array.push(data[x]);
}
console.log('credits array is '+array);
return array;
}
});
});
var getDebits = (function() {
var myArray = [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8];
console.log('debits array is '+myArray);
return myArray;
});
当我运行代码时 - 日志如下 -
"生成我的图表" myMain.js:110"获得积分" myMain.js:149 "借记数组为3.9,4.2,5.7,8.5,11.9,15.2,17,16.6,14.2,10.3,6.6,4.8" myMain.js:169"积分数据= 10.7,20.5" myMain.js:156" x = 10.7" myMain.js:158" x = 20.5" myMain.js:158" credits数组是10.7,20.5"
getDebits功能本质上是我想要的getCredits函数。 从日志看起来它看起来像我想要的 - 但我将它传递到另一个看起来像 -
的函数var generateMyGraph = (function() {
console.log("generating my graph");
$('#myLineGraph').highcharts({
chart: {
type: 'line'
},
title: {
text: 'Finances per month'
},
subtitle: {
text: 'Credit and Debit per month'
},
xAxis: {
categories: ['Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug','Sep','Oct']
},
yAxis: {
title: {
text: 'Euro (€)'
}
},
plotOptions: {
line: {
dataLabels: {
enabled: true
},
enableMouseTracking: true
}
},
series: [{
name: 'Credit',
data: getCredits()
}, {
name: 'Debit',
data: getDebits()
}]
});
});
它不起作用,有什么想法吗?提前谢谢!
答案 0 :(得分:1)
由于ajax调用异步从服务器获取响应,因此无法从ajax调用返回值,但可以在响应到达时调用函数。
因此,而不是尝试返回一个值:
return array;
调用需要此数据的函数并传递数据,因为此时您需要的数据可用:
generateMyGraph( array );
然后调整您的功能以接收和使用此数据:
var generateMyGraph = (function( arrData ) { //<=== local alias to 'array'
//....
series: [{
name: 'Credit',
data: arrData //<===== use data here
}, {
//......