Esta es mi primera solicitud aquí, y he leído muchas de las otras publicaciones relacionadas sobre este mismo tema, pero TODAVÍA me quedo atascado y casi en mi ingenio final en esto ... ¡Así que cualquier ayuda es muy apreciada!Número de serie de datos de Highcharts con ajax/json y PHP
Tengo el siguiente objeto Highcharts en Page1.php, y estoy usando AJAX para obtener datos de Page2.php en la carga de la página, así como cuando se cambia una opción desplegable.
(truncada para facilitar la lectura):
$(document).ready(function() {
var e = document.getElementById("selOption"); //<--- This is the dropdown
var domText = e.options[0].text;
var domID = e.options[e.selectedIndex].value;
var options = {
chart: {
renderTo: 'linechart',
type: 'line'
},
title: {
text: 'Title for ' + domText
},
subtitle: {
text: ''
},
xAxis: {
type: 'datetime',
dateTimeLabelFormats: {
month: '%b %e, %Y',
year: '%Y'
}
},
yAxis: {
title: {
text: 'Important Values'
},
reversed: true,
min: 0,
max: 100
},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
Highcharts.dateFormat('%b %e', this.x) +': '+ this.y;
}
},
series: []
};
$.get('Page2.php?domID=' + domID,function(data) {
$.each(data, function(key,value) {
//var series = {};
//series.name.push(value);
//series.data.push([value]);
options.series.push(data);
//alert(data);
});
var linechart = new Highcharts.Chart(options);
});
});
pagina2.php tiene la siguiente devolver el JSON:
$sqlSelect = "SELECT Item1,Item2,Item3 FROM... ";
$result = mysql_query($sqlSelect);
while ($item = mysql_fetch_assoc($result)) {
$name = $item['Item1'];
$date = str_replace("-",",",$item['Item2']);
$pos = $item['Item3'];
$arr = array("name"=>$name,"data"=>"[Date.UTC(".$date."), ".$pos." ],");
echo json_encode($arr);
}
Mi regreso JSON se parece a esto:
{"name":"Item1","data":"[Date.UTC(2011,11,08), 4 ],"}
{"name":"Item1","data":"[Date.UTC(2011,11,08), 2 ],"}
Cuando se carga mi tabla, llena los nombres de la serie 135 (?!?!?!) En la parte inferior y no parece mostrar los puntos en el gráfico de líneas
Si quito las comillas dobles y codificar el resultado en la matriz serie, funciona muy bien (aunque me di cuenta el ejemplo no parecen tener una coma entre los objetos.
Gracias por toda la ayuda ... sobre todo respuestas rápidas! ;-)
he descubierto que mi $.cada sección está creando los 135 o más "Series" porque hay muchos caracteres en mi cadena de respuestas. De alguna manera, $ .each está creando un NUEVO objeto de datos para cada personaje de la cadena. ¿Debería analizar el JSON de alguna manera? ¡Estoy a punto de formatear mi salida en PHP y ponerla en una variable de sesión! – gtr1971