У меня проблемы с созданием массива, который корректно оценивается с помощью jqplot.
Если я попробую это так, у меня будет диапазон осей х от -5 до 95, но с правильной линией.
На самом деле я бы ожидал график с осью х от 0 до 30.
С помощью firebug я могу проверить с помощью typeof, что params является объектом (массивом).
Где провал?
Вот мой getPlotData.php с некоторыми фиктивными данными:
$temp = array();
for( $i=0; $i<30; $i++ ){
$temp[] = "[" . $i . "," . ($i*5) . "]";
}
$return['line'] = "[" . implode(',', $temp . "]";
die(json_encode($return));
А вот моя функция ajax, которая вызывает функцию createPlot:
$.ajax({
type: "GET",
dataType: "json",
url: "getPlotData.php?rand=" + new Date(),
data: data,
cache: false,
success: function(data) {
var params = eval(data['line']);
createPlot(params);
}
});
function createPlot(params){
plot1 = $.jqplot('plot_data', [params], {
series:[{showMarker:true}],
markerOptions: { style:'circle' },
axesDefaults:{
tickRenderer: $.jqplot.CanvasAxisTickRenderer ,
tickOptions: {
fontSize: '14px',
textColor: "#fff"}
},
axes:{
xaxis:{
labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
label:'Tag',
tickOptions:{
},
labelOptions: {
fontSize: '13pt',
textColor: '#FFFFFF'
}
},
yaxis:{
label:'Anzahl',
labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
tickOptions:{
},
labelOptions: {
fontSize: '13pt',
textColor: '#FFFFFF'
}
}
}
});
В настоящее время вы используете implode
а также json_encode
, Я предполагаю, что ручное создание JSON может привести к некоторой ошибке в выводе. (Как двойное кодирование данных JSON.)
Это должно работать, если вы сначала добавляете данные в массив, а затем json_encode
весь набор данных.
<?php
$temp = array();
for( $i=0; $i < 30; $i++ ) {
$temp[] = array( $i, $i*5 );
}
$return['line'] = $temp;
die( json_encode( $return ) );
Других решений пока нет …