Javascript 使用传递的JSON数组创建Google折线图
我有一个通过ajax传递的JSON数组,在绘制数据图表时遇到了问题。 我需要能够将数组传递到图表,动态添加列而不重复 我尝试使用Javascript 使用传递的JSON数组创建Google折线图,javascript,json,ajax,datetime,google-visualization,Javascript,Json,Ajax,Datetime,Google Visualization,我有一个通过ajax传递的JSON数组,在绘制数据图表时遇到了问题。 我需要能够将数组传递到图表,动态添加列而不重复 我尝试使用arrayToDataTable()和DataTable()传递不同的值,然后使用data.addColumns()和data.addRow()传递不同的值,但是每次都会出现错误 已触发ajax调用: $.ajax({ type: "POST", url: "/file.php", data: { data: dataHere,
arrayToDataTable()
和DataTable()
传递不同的值,然后使用data.addColumns()
和data.addRow()
传递不同的值,但是每次都会出现错误
已触发ajax调用:
$.ajax({
type: "POST",
url: "/file.php",
data: {
data: dataHere,
},
dataType: "JSON",
success: function(result) {
var div = mydiv;
drawInterfaceChart(result,div);
},
});
使用以下代码从PHP编码的JSON:
$SQL = "SELECT DATE_FORMAT(date, 'new Date(%Y, %c, %d, %H, %i, %s)') as date, ifDesc, ifInOctets FROM tablename WHERE date between (CURDATE() - INTERVAL 1 MONTH ) and CURDATE()";
$Results = mysqli_query($db, $SQL) or die("Mysql cannot run Query");
$SQLRows = mysqli_num_rows($Results);
if ($SQLRows > 0) {
$rows = array();
while ($row = MySQLi_fetch_assoc($Results)) {
$rows[] = $row;
}
echo json_encode($rows);
}
传递的JSON数组示例:
0: {date: "new Date(2019, 3, 26, 16, 13, 15)", ifDesc: "lo", ifInOctets: "2147483647"}
1: {date: "new Date(2019, 3, 26, 16, 13, 15)", ifDesc: "Port1", ifInOctets: "2147483647"}
2: {date: "new Date(2019, 3, 26, 16, 13, 15)", ifDesc: "Port2", ifInOctets: "2147483647"}
3: {date: "new Date(2019, 3, 26, 16, 13, 16)", ifDesc: "Port6", ifInOctets: "2147483647"}
4: {date: "new Date(2019, 3, 26, 16, 13, 16)", ifDesc: "imq0", ifInOctets: "906413834"}
5: {date: "new Date(2019, 3, 26, 16, 17, 31)", ifDesc: "lo", ifInOctets: "2147483647"}
6: {date: "new Date(2019, 3, 26, 16, 17, 49)", ifDesc: "Port1", ifInOctets: "2147483647"}
7: {date: "new Date(2019, 3, 26, 16, 17, 53)", ifDesc: "Port2", ifInOctets: "171330279"}
8: {date: "new Date(2019, 3, 26, 16, 17, 57)", ifDesc: "Port6", ifInOctets: "2147483647"}
9: {date: "new Date(2019, 3, 26, 16, 17, 57)", ifDesc: "imq0", ifInOctets: "1103910085"}
10: {date: "new Date(2019, 3, 26, 16, 20, 38)", ifDesc: "lo", ifInOctets: "2147483647"}
11: {date: "new Date(2019, 3, 26, 16, 20, 39)", ifDesc: "Port1", ifInOctets: "2147483647"}
12: {date: "new Date(2019, 3, 26, 16, 20, 40)", ifDesc: "Port2", ifInOctets: "194386054"}
13: {date: "new Date(2019, 3, 26, 16, 20, 41)", ifDesc: "Port6", ifInOctets: "2147483647"}
14: {date: "new Date(2019, 3, 26, 16, 20, 42)", ifDesc: "imq0", ifInOctets: "1128562685"}
我的绘图功能:
function drawInterfaceChart(array,divR) {
var dataSet = [];
$.each(array, function (data, value) {
dataSet.push([value.date, value.ifDesc, value.ifInOctets]);
});
var data = google.visualization.arrayToDataTable(dataSet);
var chart = new google.visualization.LineChart(document.getElementById(divR));
var options = {
title: '',
legend: { position: 'right' }
};
chart.draw(data, options);
}
此布局返回错误:轴0的数据列不能是字符串类型
列0需要是一个日期时间,以及一个折线图,该折线图显示每个列及其每个“ifDesc”值的数据。我希望在图表中添加更多数据,因此创建列需要是动态的
提前谢谢
编辑:
我忘了提到我的页面包括:
google.charts.load('current',{'packages':['corechart','gauge']})代码>和我在同一页上还有其他工作图表。这里有一些问题,首先是日期
您将无法从该字符串中获取实际日期时间-->“新日期(2019、3、26、16、13、15)”
不使用eval
方法,我不推荐这种方法
最重要的是,在javascript中,当使用这个特定的日期构造函数时,
月份是以零为基础的,这意味着-->一月=0
因此,上述日期将是4月26日,我想你想要3月26日
下面是证据(运行以下代码段)
var testDate=eval(“新日期(2019,3,26,16,13,15)”;
log(testDate)代码>惊人的工作,非常感谢您非常详细的回答-这正是我所需要的工作方式