我制作了一个显示用户统计图表的表格。 用户需要选择月份和年份, 然后将显示图表 。
我用AJAX做了这个 并做了JSON的回答。
这是我的JavaScript代码:
//Show statistic
$( .statistic_submit ).click(function(){
if ($( #month ).val() == none || $( #year ).val() == none ) {
$("#dialog_empty").dialog( "open" );
return false;
}
var form = $( #statistic_view );
var data = form.serialize();
$.ajax({
url: "include/scripts/user_statistic.php",
type: "POST",
data: data,
dataType: json ,
success: function (reqCode) {
console.log(reqCode);
if (reqCode[ error_code ] == 1) {
//Generate diagram
$(".done").html(
<p class="bold center"> + reqCode[ month ] + + reqCode[ year ] + </p> +
<canvas id="cvs" width="650" height="250">[No canvas support]</canvas>
);
var data_string = jQuery.parseJSON(reqCode[ data_string ]);
var labels_tooltip = jQuery.parseJSON(reqCode[ labels_tooltip ]);
var labels_string = reqCode[ labels_string ];
var chart = new RGraph.Line( cvs , data_string);
chart.Set( chart.tooltips , labels_tooltip);
chart.Set( chart.tooltips.effect , "expand");
chart.Set( chart.background.grid.autofit , true);
chart.Set( chart.gutter.left , 35);
chart.Set( chart.gutter.right , 5);
chart.Set( chart.hmargin , 10);
chart.Set( chart.tickmarks , circle );
chart.Set( chart.labels , labels_string);
chart.Draw();
$( .done ).fadeOut( slow );
$( .done ).fadeIn( slow );
}
if (reqCode[ error_code ] == 2) {
//No values found
$( .done ).fadeOut( slow );
$("#dialog_error").dialog( "open" );
}
}
});
return false;
});
以下是我用户- 统计. php 的摘录:
$data = array();
$sql = "SELECT
Anzahl
FROM
Counter
WHERE
YEAR(Datum) = ".$year." AND
MONTH(Datum) = ".$month." ";
if (!$result = $db->query($sql)) {
return $db->error;
}
$row = $result->fetch_assoc();
$data = (int)$row[ Anzahl ];
$response[ error_code ] = 1 ;
$response[ data_string ] = "[" . join(", ", $data) . "]";
$response[ labels_string ] = "[ " . join(" , ", $labels) . " ]";
$response[ labels_tooltip ] = "[ " . join(" , ", $data) . " ]";
$response[ month ] = $month_name[$month];
$response[ year ] = $year;
echo json_encode($response);
此对重新qCode 响应 :
error_code "1"
data_string "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 2, 0, 26, 1, 5, 3, 1, 1, 0, 0, 0, 0, 0, 0]"
labels_string "[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 ]"
labels_tooltip "[ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 3 , 2 , 2 , 0 , 26 , 1 , 5 , 3 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ]"
month "Mai"
year 2012
.log写道:
JSON.parse: unexpected character!
我发现数据字符串运作良好。 标签字符串和标签工具串是问题所在, 因为... 。 唯一的问题是图表需要... 。
我新到 JavaScript 和 Ajax/JSON, 所以我不知道如何处理这件事。 在 php 中, I 会使用一个数组来进行循环 。 例如 :
echo "[";
for ($i; $i<= ..;$i++) {
echo " ".reqCode[ labels_string ][$i]." , ";
}
echo"]";
有什么建议吗?