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

309
Vistas
Javascript: ajax actualizando un div con una versión anterior de un archivo actualizado

Estoy creando un tablero web y para esto tengo una función javascript que se repite infinitamente, actualizando un div particular a intervalos frecuentes. (usa ajax/jquery para hacer esto).

He usado un bucle con setTimeout:

 <!doctype html> <html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> <script type="text/javascript" language="javascript"> function updateMain() { setTimeout(function() { console.log("updating"); $('#main').load('new-content.php #main', function() {}); updateMain(); }, 3000) } updateMain(); </script> </head> <body> <div id="main"> <p>hi there</p> </div> </body> </html>

'new-content.php' es un archivo que otra parte de mi programa actualiza constantemente para mostrar el nuevo contenido para el tablero. se ve algo como esto:

 <div id="main"> <p>Hello i am updated content</p> </div>

Estoy seguro de que el ciclo está funcionando ya que los mensajes de "actualización" aparecen a intervalos regulares en la consola.

Cuando se inicia el programa, el div muestra "hola", y en el archivo new-content.php tiene "hola, soy contenido actualizado".

La primera vez que se ejecuta el ciclo, actualiza el div para mostrar "hola, soy contenido actualizado".

Pero si actualizo más el archivo new-content.php, por ejemplo para decir "hola, tengo más contenido actualizado", simplemente no se mostrará en mi página web. Sin embargo, estoy seguro de que el ciclo aún se está ejecutando ya que los mensajes aparecen en la consola.

Es como si ajax tuviera una versión en caché del archivo new-content.php que se carga al principio y luego se sigue usando para siempre.

estoy muy confundida, si me pudieras ayudar te lo agradeceria mucho

Gracias

PD: si es relevante, el sitio web se está ejecutando a través de un matraz, pero no creo que este sea el problema.

EDITAR : creo que en realidad es un problema de almacenamiento en caché del matraz

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Puede intentar agregar un destructor de caché para ver si eso ayuda. Cambia tu código de la siguiente manera:

 function updateMain() { setTimeout(function() { console.log("updating"); const cb = new Date().getTime(); $('#main').load('new-content.php?cb=' + cb + '#main',function() { updateMain(); }); }, 3000) } updateMain();
over 4 years ago · Santiago Trujillo Denunciar

0

No pude resolver el problema, pero para cualquier persona que esté tratando de hacer un proyecto similar, decidí usar el matraz-socketio en su lugar, lo que me permite enviar datos a JavaScript para que se muestren en la página, en lugar de que JavaScript cargue los datos en sí. de un archivo. (la respuesta de vladtn en esta publicación SO fue útil como introducción a socketio)

over 4 years ago · Santiago Trujillo 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