现象:在ajax请求的success:function(data1){
}里边把echarts里边的option里的series[]里的data属性用data1“填满”,这时候服务器报错说,Uncaught TypeError: Cannot set properties of undefined (setting 'data')。
背景,我的ajax请求写到了html页面里,echarts.js文件用
<script src = "../js文件路径">
引入到本页面。
```javascript
var chartDom = document.getElementById('l1');
var myChart = echarts.init(chartDom);
var option;
option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: [
“帽子”,
"手套",
"皮革"
],
axisTick: {
alignWithLabel: true
}
}
],
yAxis: [
{
type: 'value'
}
],
series: [
{
name: 'Direct',
type: 'bar',
barWidth: '60%',
data: [0.18 ]
}
]
};
```html
<script type = "text/javascript">
function get_l1_data(){
$.ajax({
type:"get",
url : "/l1",
timeout:1000,
success:function(data1){
option.series.data=data1.data
myChart.setOption(option)
},
error:function(xhr,type,errorThrown){
}
});
}
get_l1_data()
Uncaught TypeError: Cannot set properties of undefined (setting 'data')
at Object.success ((索引):75:33)
at j (jquery.min.js:2:27309)
at Object.fireWith [as resolveWith] (jquery.min.js:2:28122)
at x (jquery.min.js:5:22111)
at XMLHttpRequest.b (jquery.min.js:5:26030)
给series后边加上索引[0],结果浏览器报错, 找不到 0。
通过ajax请求给echarts里边的option里边的series里的data属性用data1“填满”。
```python
@app.route('/l1')
def get_l1_data():
data = utils.get_l1_data()
return jsonify({"data":data})
```
这里边是后台的数据,其中get_l1_datas()的返回值是[1,2,3]
你声明一个全局变量放在series里的data属性上,在ajax请求成功的时候给变量赋值再myChart.setOption(option)就行啦
var seriesData; //声明全局变量
series: [
{
name: 'Direct',
type: 'bar',
barWidth: '60%',
data: seriesData
}
]
function get_l1_data(){
$.ajax({
type:"get",
url : "/l1",
timeout:1000,
success:function(data1){
seriesData=data1.data
myChart.setOption(option)
},
error:function(xhr,type,errorThrown){
}
});
}
get_l1_data()