JavaScript 来自 JSON 的图表,在 Cordova 中使用 AJAX
JavaScript Charts from JSON using AJAX in Cordova
我是 Cordova
的新手,我正在使用 canvas Js
在图表中显示数据。在这个 tutorial 之后,我创建了一个 Json
文件并插入了与教程中提到的相同的数据,遵循每个步骤并且 运行 代码工作完美,如下图所示。
现在我想在 xAxis
上显示 datetime
,为此我遵循了这个 tutorial 并且我能够在 xAxis 上查看带有日期时间的图表,如下图所示
但是当我在 json 中插入相同的日期时间格式并想查看我的图表时,图表是空的,下面是我的 json 数据
[
[ 1088620200000, 71 ],
[ 1104517800000, 65 ],
[ 1112293800000, 72 ],
[ 1136053800000, 52 ],
[ 1157049000000, 49 ],
[ 1162319400000, 62 ],
[ 1180636200000, 78 ],
[ 1193855400000, 55 ],
[ 1209580200000, 22 ],
[ 1230748200000, 65 ],
[ 1241116200000, 100 ],
[ 1262284200000, 58 ],
[ 1272652200000, 74 ],
[ 1291141800000, 79 ],
[ 1304188200000, 58 ]
]
下面是我的javascript
代码
$(window).on('load', function () {
var dataPoints = [];
$.getJSON("data.json", function (data) {
$.each(data, function (key, value) {
dataPoints.push({ x: value[0], y: parseInt(value[1]) })
});
});
var chart = new CanvasJS.Chart("container", {
zoomEnabled: true,
zoomType: "xy",
animationEnabled: true,
animationDuration: 2000,
exportEnabled: true,
title: {
text: "Energy vs Date Time"
},
axisY: {
title: "EnergykWh",
interlacedColor: "#F8F1E4",
tickLength: 10,
suffix: "k",
},
data: [
{
type: 'column',
xValueType: "dateTime",
//xValueFormat: "YYYY-MM-DD",
showInLegend: true,
name: "series1",
legendText: "EnergykWh",
dataPoints: dataPoints
// [
// { x: 1088620200000, y: 71 },
// { x: 1104517800000, y: 55 },
// { x: 1112293800000, y: 50 },
// { x: 1136053800000, y: 65 },
// { x: 1157049000000, y: 95 },
// { x: 1162319400000, y: 68 },
// { x: 1180636200000, y: 28 },
// { x: 1193855400000, y: 34 },
// { x: 1209580200000, y: 14 },
// { x: 1230748200000, y: 34 },
// { x: 1241116200000, y: 44 },
// { x: 1262284200000, y: 84 },
// { x: 1272652200000, y: 4 },
// { x: 1291141800000, y: 44 },
// { x: 1304188200000, y: 11 }
//]
}
]
});
chart.render();
});
在上面的代码中,dataPoints
中有一个 commented
部分与我的 Json 中的相同,当我删除注释标记和 运行 代码时我可以完美地看到图表中的数据,但是当我想从 json
文件中检索它时,我将无法在图表
上看到任何内容
我一定是遗漏了什么,非常感谢任何帮助
最简单的方法是将 json
数据存储到 javascript
文件中,同时将数据存储到变量中,然后将其包含在 html
页面中。之后使用 .js
文件中的变量,并执行 for loop
,这个 for 循环将获取您的数据,然后您可以在图表中查看它。请参阅下面的代码以获得更多理解。
将 json 数据保存到 javascript 文件中
var jsonData = [{ "x": "2016-06-25 12:58:52", "y": 10.22 }, { "x": "2016-14-25 14:42:47", "y": 24.73 },
{ "x": "2016-07-25 13:33:23", "y": 11.14 }, { "x": "2016-15-25 15:07:26", "y": 26.58 },
{ "x": "2016-08-25 13:49:18", "y": 13.58 }, { "x": "2016-16-25 15:14:49", "y": 27.66 },
{ "x": "2016-09-25 13:55:01", "y": 15.25 }, { "x": "2016-17-25 15:32:51", "y": 28.68 },
{ "x": "2016-10-25 14:00:15", "y": 17.25 }, { "x": "2016-18-25 15:40:32", "y": 30.73 },
{ "x": "2016-11-25 14:23:31", "y": 19.99 }, { "x": "2016-19-25 15:58:07", "y": 32.46 },
{ "x": "2016-12-25 14:30:36", "y": 21.78 }, { "x": "2016-20-25 16:21:25", "y": 34.79 },
{ "x": "2016-13-25 14:34:23", "y": 23.45 }];
在 html 页面中包含您的 javascript 文件
<script type="text/javascript" src="scripts/json.js"></script>
使用for循环获取x和y数据
for (var i = 0; i < jsonData.length; i++) {
dataPoints.push({
x: new Date(jsonData[i].x),
y: jsonData[i].y
});
}
在canvasJs中传递这个数据点
data: [
{
type: 'column',
xValueType: "dateTime",// no use for it
//xValueFormat: "YYYY-MM-DD",// use xValueFormat
showInLegend: true,
name: "series1",
legendText: "EnergykWh",
dataPoints: dataPoints
}
]
我希望这能奏效
我是 Cordova
的新手,我正在使用 canvas Js
在图表中显示数据。在这个 tutorial 之后,我创建了一个 Json
文件并插入了与教程中提到的相同的数据,遵循每个步骤并且 运行 代码工作完美,如下图所示。
现在我想在 xAxis
上显示 datetime
,为此我遵循了这个 tutorial 并且我能够在 xAxis 上查看带有日期时间的图表,如下图所示
但是当我在 json 中插入相同的日期时间格式并想查看我的图表时,图表是空的,下面是我的 json 数据
[
[ 1088620200000, 71 ],
[ 1104517800000, 65 ],
[ 1112293800000, 72 ],
[ 1136053800000, 52 ],
[ 1157049000000, 49 ],
[ 1162319400000, 62 ],
[ 1180636200000, 78 ],
[ 1193855400000, 55 ],
[ 1209580200000, 22 ],
[ 1230748200000, 65 ],
[ 1241116200000, 100 ],
[ 1262284200000, 58 ],
[ 1272652200000, 74 ],
[ 1291141800000, 79 ],
[ 1304188200000, 58 ]
]
下面是我的javascript
代码
$(window).on('load', function () {
var dataPoints = [];
$.getJSON("data.json", function (data) {
$.each(data, function (key, value) {
dataPoints.push({ x: value[0], y: parseInt(value[1]) })
});
});
var chart = new CanvasJS.Chart("container", {
zoomEnabled: true,
zoomType: "xy",
animationEnabled: true,
animationDuration: 2000,
exportEnabled: true,
title: {
text: "Energy vs Date Time"
},
axisY: {
title: "EnergykWh",
interlacedColor: "#F8F1E4",
tickLength: 10,
suffix: "k",
},
data: [
{
type: 'column',
xValueType: "dateTime",
//xValueFormat: "YYYY-MM-DD",
showInLegend: true,
name: "series1",
legendText: "EnergykWh",
dataPoints: dataPoints
// [
// { x: 1088620200000, y: 71 },
// { x: 1104517800000, y: 55 },
// { x: 1112293800000, y: 50 },
// { x: 1136053800000, y: 65 },
// { x: 1157049000000, y: 95 },
// { x: 1162319400000, y: 68 },
// { x: 1180636200000, y: 28 },
// { x: 1193855400000, y: 34 },
// { x: 1209580200000, y: 14 },
// { x: 1230748200000, y: 34 },
// { x: 1241116200000, y: 44 },
// { x: 1262284200000, y: 84 },
// { x: 1272652200000, y: 4 },
// { x: 1291141800000, y: 44 },
// { x: 1304188200000, y: 11 }
//]
}
]
});
chart.render();
});
在上面的代码中,dataPoints
中有一个 commented
部分与我的 Json 中的相同,当我删除注释标记和 运行 代码时我可以完美地看到图表中的数据,但是当我想从 json
文件中检索它时,我将无法在图表
我一定是遗漏了什么,非常感谢任何帮助
最简单的方法是将 json
数据存储到 javascript
文件中,同时将数据存储到变量中,然后将其包含在 html
页面中。之后使用 .js
文件中的变量,并执行 for loop
,这个 for 循环将获取您的数据,然后您可以在图表中查看它。请参阅下面的代码以获得更多理解。
将 json 数据保存到 javascript 文件中
var jsonData = [{ "x": "2016-06-25 12:58:52", "y": 10.22 }, { "x": "2016-14-25 14:42:47", "y": 24.73 },
{ "x": "2016-07-25 13:33:23", "y": 11.14 }, { "x": "2016-15-25 15:07:26", "y": 26.58 },
{ "x": "2016-08-25 13:49:18", "y": 13.58 }, { "x": "2016-16-25 15:14:49", "y": 27.66 },
{ "x": "2016-09-25 13:55:01", "y": 15.25 }, { "x": "2016-17-25 15:32:51", "y": 28.68 },
{ "x": "2016-10-25 14:00:15", "y": 17.25 }, { "x": "2016-18-25 15:40:32", "y": 30.73 },
{ "x": "2016-11-25 14:23:31", "y": 19.99 }, { "x": "2016-19-25 15:58:07", "y": 32.46 },
{ "x": "2016-12-25 14:30:36", "y": 21.78 }, { "x": "2016-20-25 16:21:25", "y": 34.79 },
{ "x": "2016-13-25 14:34:23", "y": 23.45 }];
在 html 页面中包含您的 javascript 文件
<script type="text/javascript" src="scripts/json.js"></script>
使用for循环获取x和y数据
for (var i = 0; i < jsonData.length; i++) {
dataPoints.push({
x: new Date(jsonData[i].x),
y: jsonData[i].y
});
}
在canvasJs中传递这个数据点
data: [
{
type: 'column',
xValueType: "dateTime",// no use for it
//xValueFormat: "YYYY-MM-DD",// use xValueFormat
showInLegend: true,
name: "series1",
legendText: "EnergykWh",
dataPoints: dataPoints
}
]
我希望这能奏效