#javascript #python
Вопрос:
Я написал простое приложение на Python Flask. Есть страница, часть которой должна обновляться через определенный промежуток времени (например, 1 секунда). Я понятия не имею, как это реализовать на Flask, поэтому решил использовать JavaScript (я практически не знаком с этим языком). Скрипт ежесекундно обращается к серверу Flask по определенному URL-адресу и получает данные в формате JSON. В Python обработчик этого URL-адреса отправляет ответ с помощью jsonify()
функции. Отправляемый объект представляет собой массив словарей на Python — [{key: value,...}, {key: value,...},...]
. В JavaScript я получаю (вероятно) массив объектов — [object Object], [object Object]
. Мой вопрос в том, как мне получить аналогичный объект в JS, как в Python, чтобы правильно извлечь информацию. На языке Python:
[{'sender': '10.0.0.10:3000', 'recipient': ['10.0.0.10:2000'], 'amount': 1, 'message': 'hi'},
{'sender': '10.0.0.10:3000', 'recipient': ['10.0.0.10:2000'], 'amount': 1, 'message': 'hello'}]
В JS:
[object Object], [object Object]
Обработчик URL-адресов, сообщения — массив словарей:
@app.route('/consensus', methods=['GET'])
def consensus():
messages = blockchain.resolve_conflicts()
return jsonify(messages=messages)
JS-скрипт, на html-странице есть блок с сообщением ID #
setInterval(function () {
$SCRIPT_ROOT = {{ request.script_root|tojson|safe }}
$.getJSON($SCRIPT_ROOT "/consensus",
function(data) {
$("#messages").text(data.messages)
});
}
, 10000)
Ответ №1:
Попробуйте это, чтобы увидеть, из чего состоят объекты:
$("#messages").text(JSON.stringify(data.messages))
Затем вам нужно узнать о доступе к свойствам объекта. Происходит то, что ваш объект преобразуется в строку, которая для любого объекта JS является строковым значением object Object
по умолчанию.
Если ваш объект выглядит следующим образом: x = {name: 'Tom'}
тогда, если вы напечатаете объект (x), он напечатает object Object
— но если вы напечатаете x.name
, он напечатает тома.
Другими словами, вам нужно отформатировать строку, а не просто распечатать строковое значение объекта.
Есть много примеров того, как это сделать, вот несколько: https://www.w3schools.com/js/js_object_display.asp
Комментарии:
1. $(«#сообщения»).текст(JSON.stringify(данные.сообщения)) — это помогло мне, и данные отображались правильно