@lrv

Как передать переменную из Flask в JavaScript?

Добрый день.

У меня есть класс:

class Test(db.Model):

    __tablename__ = 'test'
    __table_args__ = {'schema': 'test_temp'}

    a = db.Column(db.String, primary_key=True)
    b = db.Column(db.Integer, nullable=False)

    def __init__(self, a, b):
        self.a = a
        self.b = b

    def __repr__(self):
        return '[\'a\': \'{}\', \'b\': {}]'.format(self.a, self.b)

    def as_dict(self):
        return {'a': self.a, 'b': self.b}


И функция, которая возвращает JSON:
@example.route('/report_example', methods=['GET'])
def example():
    result = Test.query.all()
    result_dict = [r.as_dict() for r in result]
    return render_template("static/example.html", result_dict=json.dumps(result_dict))


Как мне передать результат в JavaScript и сохранить его в переменную ?
В HTML все просто делается, через "{{result}}", а JavaScript это что то не срабатывает.
Помогите, пожалуйста.
  • Вопрос задан
  • 1812 просмотров
Решения вопроса 1
@iddqda
network engineer, netdevops
Вот так примерно

html:
<div>
    <button id="jsfetch">fetch json</button>
  </div>

js:
document.querySelector("#jsfetch").addEventListener("click", Handler);
function Handler(event) {
    fetch('/api')
        .then((response) => {
            return response.json();
        })
        .then((myjson) => {
            console.log(myjson);
        });
}


flask:
from flask import jsonify
data = { 
    "id": 123,
    "name": "Вася",
    "surname": "Пупкин"
}

@app.route('/api')
def api():
    return jsonify(data)


Запускаешь, нажимаешь на кнопку и видишь в консоли браузера:
Object { id: 123, name: "Вася", surname: "Пупкин" }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы