Escribí una aplicación simple en Python Flask. Hay una página, parte de la cual debe actualizarse después de un cierto intervalo (por ejemplo, 1 segundo). No tengo idea de cómo implementar esto en Flask, así que decidí usar JavaScript (prácticamente no estoy familiarizado con este lenguaje). El script accede al servidor Flask en una URL específica cada segundo y recibe datos en formato JSON. En Python, el controlador de esta URL envía una respuesta mediante la función jsonify() . El objeto que se envía es una matriz de diccionarios en Python - [{key: value,...}, {key: value,...},...] . En JavaScript, obtengo (probablemente) una matriz de objetos - [object Object], [object Object] . Mi pregunta es cómo obtengo un objeto similar en JS, como en Python, para poder extraer correctamente la información. En 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'}]En JS:
[object Object], [object Object]Controlador de URL, mensajes: una variedad de diccionarios:
@app.route('/consensus', methods=['GET']) def consensus(): messages = blockchain.resolve_conflicts() return jsonify(messages=messages)Script JS, la página html tiene un bloque con el ID #mensaje
setInterval(function () { $SCRIPT_ROOT = {{ request.script_root|tojson|safe }} $.getJSON($SCRIPT_ROOT+"/consensus", function(data) { $("#messages").text(data.messages) }); } , 10000)Prueba esto para ver de qué están compuestos los objetos:
$("#messages").text(JSON.stringify(data.messages))
Luego, debe aprender a acceder a las propiedades de los objetos. Lo que sucede es que su objeto se convierte en una cadena, que para cualquier objeto JS, su valor de cadena es object Object de forma predeterminada.
Si su objeto es así: x = {name: 'Tom'} entonces, si imprime el objeto (x), imprime object Object , pero si imprime x.name , imprimirá tom.
En otras palabras, debe formatear su cadena y no solo imprimir el valor de la cadena del objeto.
Hay muchos ejemplos de cómo hacer esto, aquí hay algunos: https://www.w3schools.com/js/js_object_display.asp