2013-03-04 98 views
1

我在将Flot条形图从Ajax请求更新为返回JSON数据的PHP脚本时遇到了一些问题。更新Flot PHP,AJAX,JSON

PHP脚本是:

$vars = array(
    'result' => "success", 
    'msg' => AJAX_SUCCESS, 
    'series' => "Group One,80,Group Two,10" 
    ); 
echo json_encode($vars); 

这是返回给一个变量 '系列'

var data = [series.series]; 

它输出到控制台:

Group One,80,Group Two,10 

我也有一个评论out变量是:

//var datatwo = [ ["Group One", 80], ["Group Two", 10] ]; 

这还输出到控制台

Group One,80,Group Two,10 

实际JavaScript来创建图形是

$.plot("#group-month-graph", [data], options); 

的选项在脚本的另一位置分配。

我试图找出我做错了,因为当我提醒返回的数据或输出到控制台的值是相同的,但返回的数据不会绘制图形,而如果我使用注释掉的值。

希望是有道理的。我已经减少了完整的脚本,因为我不认为问题在于其他任何地方。

+0

你的数据格式series阵列似乎是不正确的。检查https://github.com/flot/flot/blob/master/API.md – deadlock 2013-03-04 03:13:54

+0

此脚本适用于使用格式数据的flot'类别'模式:[[“Label”,10],[“Label “,20]]。我尝试将数据返回为:'series'=>“[Group One,80],[Group Two,10]”无效。 – 2013-03-04 03:24:51

+0

当插件需要一个数组时,您正在返回一个字符串。您应该返回'[[“Group One”,80],[“Group Two”,10]] – deadlock 2013-03-04 03:26:10

回答

1

您正在返回一个字符串,而插件期待一个数组。您应该返回[["Group One",80],["Group Two",10]]

你的PHP系列结构变更为:

$vars = array(
    'result' => "success", 
    'msg' => AJAX_SUCCESS, 
    'series' => array(array("Group One",80),array("Group Two",10)) 
); 

此外,你应该得到使用data而不是[data]

$.plot("#group-month-graph", data, options); 
+0

感谢队友。默认脚本在$ .plot(“#group-month-graph”,data,options)中有[data];它使用注释掉的值输出正确的数据,但是使用您发布的代码适用于JSON数据。这对我来说没问题。干杯。 – 2013-03-04 03:38:36