Доступ к одному объекту SQLAlchemy через JS - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь обновить большинство данных моего сайта на основе выбора в поле select2 с помощью изменения.Я следовал инструкциям, которые используют fetch для создания файла JSON с информацией, извлеченной из базы данных.Хотя этот сценарий немного отличается, потому что я пытаюсь получить доступ к одному объекту для использования в моем JS для обновления HTML-кода какого-либо сайта.

Я пытался использовать fetch для возврата объекта, но я обнаружил, что он возвращает массив со случайными данными об URL.

views.py

@app.route('/selected_room/<int:room_id>')
def selected_room(room_id):
    room = Room.query.filter_by(id=room_id).first_or_404()

    return room

возвращает:

body: (...)
bodyUsed: false
headers: Headers {}
ok: true
redirected: false
status: 200
statusText: "OK"
type: "basic"
url: "http://127.0.0.1:5000/room/2"

Я уже разместил часть этого кода выше, но вот все, что я сейчас настроил.

views.py

@app.route('/selected_room/<int:room_id>')
def selected_room(room_id):
    room = Room.query.filter_by(id=room_id).first_or_404()

    return room

js

$(document).ready(function(){
    $('#rooms').on('change', function() {
        var room_id = $(this).val();

        fetch('/room/' + room_id).then(function(data) {
            // this console.log is me testing to see what data returns
            console.log(room_id, data, data.room_id, data.room, data.rooms);
        });
    });
});

На самом деле я ищу замену JS на {{ object.id(etc) }}.Либо я совершенно не в курсе, а это невозможно, либо я просто на неправильном пути.Спасибо за помощь!

1 Ответ

0 голосов
/ 21 июня 2019

Давайте подумаем об этом систематически.

fetch задокументировано в MDN . Похоже, вы вызвали его с правильными аргументами: resource, который может быть URL, и без аргумента init (который не является обязательным).

В нем говорится, что fetch возвращает обещание, и это обещание преобразуется в объект Response. Если вы не знакомы с обещаниями, вы можете перейти по ссылке на Promise оттуда. Если да, вы будете знать, что аргумент data является объектом Response.

Если вы перейдете по ссылке, чтобы увидеть, что такое объект Response, вы увидите, что он содержит поля, такие как headers, ok, redirected и т. Д. Это, кажется, соответствует тому, что вы написано в вашем вопросе, под заголовком «возвращается:». Поэтому я предполагаю, что возвращаемое вами значение - это объект data, как показано console.log.

Итак, вопрос: учитывая Response (переменная data), как вы извлекаете тело ответа? В документации к Response есть несколько способов доступа к телу ответа. Вы можете использовать data.body, data.arrayBuffer(), data.blob(), data.formData(), data.json() или data.text(), в зависимости от того, какой ответ это. Я почти не знаю Python или какую-либо флягу, я не знаю, что такое Room на стороне сервера, поэтому я не знаю, на что похож ответ.

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