Почему происходит сбой, когда flask возвращает данные в echarts ajax асинхронно? - PullRequest
0 голосов
/ 01 февраля 2020

Я хочу нарисовать фигуру эхарта в html по данным из flask. Но я столкнулся с некоторой проблемой при использовании ajax для преобразования данных в echarts, что фигура echarts не отображается в html. Я проверил данные, непосредственно установив их в javascript часть для echarts, и это работает. Здесь я хочу знать, в чем заключается ошибка в моем коде? Javascript часть

var myChart = echarts.init(document.getElementById('canvas'));

$document.ready(function(){
    getData();
});

function getData(){
    $.ajax({
        url:'/getdata',
        data:{},
        type:'POST',
        async:false,
        dataType:'json',
        success:function(data_temp){
            myChart.setOption({
                title:{
                    text:'loading asynchronously'
                },          
                tooltip: {},
                legend: {
                    data:['Sale']
                },
                xAxis: {
                    data: data_temp.language
                },
                yAxis: {},
                series: [{
                    name: 'Sale',
                    type: 'bar',
                    data: data_temp.value
                }]
            });

            window.onresize=function() {
                resizemyChartContainer();
                myChart.resize();
            };                                          
        },
        error:function(msg){
            alert("System error");
        }                               
    }); 
};

Flask часть

from flask import render_template,Flask,jsonify,request,url_for
import json
app = Flask(__name__)
@app.route('/')
def hello():
    return render_template('Application.html')

@app.route('/getdata',methods=[ 'POST'])
def get_data():
    language = ['python', 'java', 'c', 'c++', 'c#', 'php']
    value = ['100', '150', '100', '90', '80', '90']
    return json.dumps({'language':language,'value':value})

if __name__ == '__main__':
    app.run()

Рисунок Echart может быть показан как javascript код, записанный как

var myChart = echarts.init(document.getElementById('canvas'));

var option = {
    title: {
        text: 'loading asynchronously'
    },
    tooltip: {},
    legend: {
        data:['Sale']
    },
    xAxis: {
        data: ['python', 'java', 'c', 'c++', 'c#', 'php']
    },
    yAxis: {},
    series: [{
        name: 'Sale',
        type: 'bar',
        data: ['100', '150', '100', '90', '80', '90']
    }]
};

myChart.setOption(option);

window.onresize=function() {
    resizemyChartContainer();
    myChart.resize();
}

Что не так с javascript или flask код?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...