javascript - 来自ajax php程序的Highcharts系列setData
问题描述
我在我的网站上使用 Highcharts。然后是一个 Ajax PHP 程序,通过单击图例项从数据库动态加载数据。现在我想将结果设置到系列数据中,但没有成功,因为我无法使用“this”,因为“this”不再是图例项目。您将能够从下面的代码中理解它。我尝试了类似的东西,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 && 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>
解决方案
解决。
<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 && 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>
推荐阅读
- azure - 使用 Jenkins 进行多区域 Azure 持续部署
- javascript - 如何在 php 的 iframe 中显示 src 链接
- python - 匹配以在 python (pandas) 中重新编码字母和数字
- python - 使用 pymongo 命令的相反单/双引号
- speech-recognition - Microsoft Speech 产品/平台之间的差异
- react-native - 当用户停止输入时,react-native 触发器在 afterSearch 中按下回车键
- javascript - 回流/重绘问题?优化太慢的应用
- vba - 循环工作表时对象定义错误
- python - Django(DRF)未显示 CORS POST 数据(来自 React 前端)
- google-app-engine - Flask 不会重定向到 GAE 上带有斜杠的规范 URL