我不认为我完全理解JSON,这是我的代码:
$.ajax({
type: "POST",
url: baseurl + "analytics/grab_points"
}).done(function(data) {
console.log(data);
var line1=$.parseJSON(data);
console.log(line1);
var plot2 = $.jqplot('chartdiv', line1, {
title: 'Customized Date Axis',
gridPadding: {right: 35},
axes: {
xaxis: {
renderer: $.jqplot.DateAxisRenderer,
tickOptions: {formatString: '%b %#d, %y'},
min: 'May 30, 2008',
tickInterval: '1 month'
}
},
series: [{lineWidth: 4, markerOptions: {style: 'square'}}]
});
});
jqPlot似乎期望这样的数据:
[['2008-06-28 8:00AM', 4], ['2008-6-30 8:00AM', 1], ['2008-8-30 8:00AM', 5.7]]
(应该是var line1 中的内容)
我的服务器端代码(PHP):
$test=array(
"2008-06-28 8:00AM" =>4,
"2008-6-30 8:00AM" =>1,
"2008-8-30 8:00AM" =>5.7,
);
echo json_encode($test);
我的控制台记录:
{"2008-06-28 8:00AM":4,"2008-6-30 8:00AM":1,"2008-8-30 8:00AM":5.7} analytics:103
Object {2008-06-28 8:00AM: 4, 2008-6-30 8:00AM: 1, 2008-8-30 8:00AM: 5.7} analytics:105
Uncaught Error: No data specified
我很确定我会对这个JSON(成长的痛苦)采取野蛮行为,任何想法都会很棒。
答案 0 :(得分:0)
如果你想获得jqPlot想要的结构,你将不得不在php代码中更改你的数组......
jqPlot期待像你的php数组结构:
$test = array(
array("2008-06-28 8:00AM",4),
array("2008-6-30 8:00AM",1)
);
检查http://php.net/manual/en/function.json-encode.php上的示例2($ c)
你看到的{}只是因为你输出它作为对象而不是数组,但这应该与[]相同(这也在php手册中解释)
编辑:我也不认为这一行:var line1=$.parseJSON(data);
仍然需要,因为你的data
已经是json。