Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

318
Vistas
Actualizar dinámicamente Divs en la página web (frasco)

Actualizar dinámicamente divisiones en la página web

Estoy tratando de actualizar una página web dinámicamente usando matraz y JavaScript (AJAX). Me gustaría actualizar los puntajes de ambos equipos sin actualizar la página (en un intervalo establecido). El problema que tengo es que las puntuaciones div, en la página 'updated_score_div.html', parecen agregarse en lugar de reemplazar las puntuaciones div en la página 'home.html'. Hay alguna manera de evitar esto? (¿Cambiando el código AJAX o usando fetch?)
Idealmente, me gustaría hacer esto para varios equipos que se encuentran en diferentes divisiones en la página web.

código matraz:

 from flask import Flask, redirect, url_for, render_template, jsonify app = Flask(__name__) @app.route("/updated_score_divs", methods = ['POST']) def updatescoredivs(): teamonescore = '20' teamtwoscore = '15' return jsonify('', render_template("updated_score_divs.html", x = teamonescore, y = teamtwoscore)) @app.route("/") def homepage(): teamonescore = '00' teamtwoscore = '00' return render_template("home.html", x = teamonescore, y = teamtwoscore) if __name__ == "__main__": app.run(debug=True)

código home.html:

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script> $(function(){ window.setInterval(function(){ loadNewScore() }, 3000) function loadNewScore(){ $.ajax({ url: "/updated_score_divs", type: "POST", dataType: "json", success: [code1, code2] }) } }); function code1(data){$(teamonescore).replaceWith(data)} function code2(data){$(teamtwoscore).replaceWith(data)} </script> <h1>Home Html</h1> This is the Team One Score <div id = "teamonescore"> {{x}} </div> This is the Team Two Score <div id = "teamtwoscore"> {{y}} </div>

código_score_divs.html actualizado:

 <div id = "teamonescore"> {{x}} </div> <div id = "teamtwoscore"> {{y}} </div>

Página de inicio inicial
Página de inicio actualizada

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El problema es con tu lógica. La función updatescoredivs proporciona valores tanto para el equipo uno como para el equipo dos y ambos valores se envían a su plantilla a través del comando render_template . Esto significa que su plantilla - updated_score_divs.html code realidad tiene los 2 puntajes.

Luego reemplaza los contenidos de teamonescore con la plantilla (recuerde que ya tiene los 2 valores) y luego reemplaza los contenidos de teamtwoscore con la misma plantilla. Por lo tanto, obtienes la plantilla repetida (para que parezca un Apéndice)

2)

En lugar de return render_template en la función updatescoredivs , solo debe devolver json , por ejemplo.

 return jsonify(x = teamonescore, y = teamtwoscore)
about 4 years ago · Juan Pablo Isaza Denunciar

0

con jquery...

 // pass an ElementID and an endpoint to redraw that div with the endpoints response window.redraw = function( _id, endpoint ){ $.get( endpoint, function( data ) { $( "#"+_id ).html( $(data).html() ); }); }

con traer...

 function redraw(_id, endpoint) { fetch(endpoint) .then(function(response){return response.text();}) .then(function(data){ document.getElementById(_id).innerHTML = data; } ) }

considere también htmx para ocultar todo eso... https://htmx.org/

y no devuelvas json. devolver HTML. está bien.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda