一直在努力将数据从数组中提取到图表中。这是我的代码,
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "<%=ResolveUrl("Services/HighstockService.asmx/TempData") %>",
data: "{}", /* Sending specific indata */
dataType: "json",
success: function (Result) {
//debugger;
Result = Result.d;
var tempData = [];
for (var i in Result) {
var serie = new Array("[" + parseInt(Result[i].Date.substr(6)) + "," + Result[i].Value + "],");
tempData.push(serie);
}
DrawTempChart(tempData);
},
error: function (Result) {
alert("Error");
}
});
});
function DrawTempChart(tempData) {
debugger;
$('#tempChart').highcharts('StockChart', {
title: {
text: 'AAPL Stock Price'
},
type: 'datetime',
dateTimeLabelFormats: {
second: '%Y-%m-%d %H:%M:%S',
minute: '%Y-%m-%d %H:%M',
hour: '%Y-%m-%d %H:%M',
day: '%Y %m-%d',
week: '%Y %m-%d',
month: '%Y-%m',
year: '%Y'
},
series: [{
name: 'AAPL',
data: [tempData],
}]
});
}
</script>
我将括号和逗号添加到数组中的每个索引,以遵循highstocks接受数据的结构。调试时,我会收到如下数据:&#34; [1418017375000,33],&#34;。
由于javascript在从Web Services移动时添加括号和正斜杠,我需要解析Date。我不确定它是否在javascript中正确格式化以在图表中工作。
由于我真的无法调试DrawTempChart函数,所以我实际上并不知道数组是如何发送到该函数的。谁能看出我做错了什么?
[edit]可能应该补充说,我最接近输出的是显示图表中数组中的最后一个索引。
答案 0 :(得分:1)
首先,data
中的series
应该是这样的:
[[UTCTime1, value1], [UTCTime2, value2], ...]
所以将行data: [tempData]
更改为:
data: tempData
其次,当您创建新的Array
时,格式不是这样的:
var serie = new Array("[" + parseInt(Result[i].Date.substr(6)) + "," + Result[i].Value + "],");
你应该这样写:
var serie = new Array(parseInt(Result[i].Date.substr(6)), Result[i].Value);
它会自动添加[]
和,
:[item1, item2]
当您将serie
推入tempData
时,它还会在项目之间放置,
。
最后,请确保Result[i].Date.substr(6)
创建正确且有序的13位UTC数字,因为highcharts不会对数据进行排序。