#javascript #php #ajax #highcharts
#javascript #php #аякс #высокие диаграммы
Вопрос:
Я использую Highcharts на своем веб-сайте. Затем процедура Ajax PHP для динамической загрузки данных из базы данных, нажав на элемент легенды. Теперь я хочу установить результат в данные серии, но безуспешно, так как я не могу использовать «это», поскольку «это» больше не является элементом легенды. Вы сможете понять это из приведенного ниже кода. Я попробовал что-то вроде chart.series.setData[]
, но это не сработало. Спасибо за любые решения о том, как я могу действовать дальше.
<script>
Highcharts.chart('myChart', {
series: [<?echo $allnames;?>],
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top'
},
plotOptions: {
series: {
events: {
legendItemClick: function() {
var jmeno=this.name;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 amp;amp; this.status == 200) {
myData= this.responseText;
//I am unable to use 'this' as it is not the legend item
this.setData([myData]);
}
};
xmlhttp.open("GET","/data.php?q=" jmeno,true);
xmlhttp.send();
}
}
}
},
});
</script>
Ответ №1:
Решено.
<script>
Highcharts.chart('graf', {
title: {text: 'Hello darkness my old friend'},
series: [<?echo $allnames;?>],
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top'
},
plotOptions: {
series: {
events: {
legendItemClick: function() {
var jmeno=this.name;
var that=this;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 amp;amp; this.status == 200) {
var myData = this.responseText;
var splitData = myData.split(",");
var newData = [];
for(var i = 0;i<splitData.length;i ){
var num = splitData[i];
if(num != ""){
num = parseFloat(num);
newData.push(num);
}
}
that.setData(newData);
}
};
xmlhttp.open("GET","/data.php?q=" jmeno,true);
xmlhttp.send();
}
}
}
},
});
</script>