Foros del Web » Programando para Internet » Javascript » Frameworks JS »

No actualizar si no hay cambios

Estas en el tema de No actualizar si no hay cambios en el foro de Frameworks JS en Foros del Web. Buenas, Tengo la siguiente duda: Estoy actualizando el contenido de una web cada 10 segundos a traves de la función window.setInterval("actualizacion_reloj()", 10000); Esto provoca, que ...
  #1 (permalink)  
Antiguo 19/05/2009, 05:57
 
Fecha de Ingreso: octubre-2008
Mensajes: 19
Antigüedad: 9 años, 4 meses
Puntos: 0
No actualizar si no hay cambios

Buenas,

Tengo la siguiente duda:

Estoy actualizando el contenido de una web cada 10 segundos a traves de la función

window.setInterval("actualizacion_reloj()", 10000);

Esto provoca, que cada 10 sg haya un "pequeño "corte en el movimiento de un texto en el pie de la web.

No hay alguna manera de que en caso de que no haya ninguna actualización en la base de datos no actualice?

Muchas gracias.
  #2 (permalink)  
Antiguo 19/05/2009, 07:45
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.711
Antigüedad: 12 años, 9 meses
Puntos: 833
Respuesta: No actualizar si no hay cambios

Puedes, por ejemplo, comparar el valor que recibes del servidor y el valor que ya tienes; si son iguales, no actualizar el contenido.

O también, desde el servidor, devolver directamente un código si no se actualizó.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 20/05/2009, 05:15
 
Fecha de Ingreso: octubre-2008
Mensajes: 19
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: No actualizar si no hay cambios

Este es el codigo que tengo:

<script language="javascript" type="text/javascript">
var RequestObject = false;
var Archivo = 'enlinea.php?id_centro=<?php echo $id_centro;?>';
window.setInterval("actualizacion_reloj()", 2000);
if (window.XMLHttpRequest)
RequestObject = new XMLHttpRequest();
if (window.ActiveXObject)
RequestObject = new ActiveXObject("Microsoft.XMLHTTP");

function ReqChange() {
if (RequestObject.readyState==4) {
if (RequestObject.responseText.indexOf('invalid') == -1) {
msgs = RequestObject.responseText.split('|');
document.getElementById("quickSummary").innerHTML = msgs[0];
}
else {
document.getElementById("quickSummary").innerHTML = "Error llamando";
}
}
}
function llamadaAjax() {
RequestObject.open("GET", Archivo , true);
RequestObject.onreadystatechange = ReqChange;
RequestObject.send(null);
}
function actualizacion_reloj() {
llamadaAjax();
}
</script>

Mediante php, se averiguar si he realizado algun cambio en la base de datos, pero no se como hacer en ajax para que no me actualice si por ejemplo el fichero php devuelve un 0 (no hay cambios en la bd).

Muchas gracias por tu ayuda.
  #4 (permalink)  
Antiguo 25/05/2009, 03:37
 
Fecha de Ingreso: octubre-2008
Mensajes: 19
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: No actualizar si no hay cambios

Al final estoy utilizando la libreria jquery para actualizar contenido,

<script type="text/javascript">
setInterval('llamarPagina();', 10000);
function llamarPagina(){
$("#capa").load('enlinea.php?id_centro=1');
}
</script>


Pero aún así no doi con la tecla, de como frenar la llamada si no hay cambios.

Por favor ayudadme.
  #5 (permalink)  
Antiguo 04/06/2009, 06:12
 
Fecha de Ingreso: octubre-2008
Mensajes: 19
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: No actualizar si no hay cambios

Nadie me puede ayudar?
  #6 (permalink)  
Antiguo 04/06/2009, 07:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.711
Antigüedad: 12 años, 9 meses
Puntos: 833
Respuesta: No actualizar si no hay cambios

Puedes simplemente hacer algo como esto:
Código Javascript:
Ver original
  1. if (respuesta == 0) {
  2.     // Actualizar
  3. } else {
  4.     // No actualizar
  5. }
Saludos
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 05/06/2009, 07:39
 
Fecha de Ingreso: octubre-2008
Mensajes: 19
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: No actualizar si no hay cambios

Insultas mi inteligencia con esa respuesta. Gracias por tu ayuda, ya preguntaré en otro foro.

1saludo.
  #8 (permalink)  
Antiguo 05/06/2009, 07:59
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.711
Antigüedad: 12 años, 9 meses
Puntos: 833
Respuesta: No actualizar si no hay cambios

Es que si no explicas exactamente cuál es el problema, difícilmente podrás obtener la ayuda deseada.

Éxitos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 05/06/2009, 08:22
 
Fecha de Ingreso: octubre-2008
Mensajes: 19
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: No actualizar si no hay cambios

Vale, lo explicaré mejor.

Codigo que tengo:

<script src="js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
setInterval('llamarPagina();', 10000);
function llamarPagina(){
$("#capa").load('enlinea.php?id_centro=1');
}
</script>

Este script cada 10sg carga forzosamente el contenido del fichero "enlinea.php" ya que como se ve en el script uso la funcion "load" de jquery, que hace que me cargue el contenido si o si. Por lo tanto, pienso que necesitaría de otra función que no sea "load" para poder saber si ha habido cambios en "enlinea.php" y en caso de haber cambios, usar la funcion "load" para mostrar el contenido.

Espero haberme explicado mejor.

Un saludo y gracias.
  #10 (permalink)  
Antiguo 05/06/2009, 08:37
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.711
Antigüedad: 12 años, 9 meses
Puntos: 833
Respuesta: No actualizar si no hay cambios

Yo no uso jQuery. No obstante, con el código anterior que mencionabas, como te había comentado, una condicional te puede servir:
Código javascript:
Ver original
  1. function ReqChange() {
  2.     if (RequestObject.readyState==4) {
  3.         if (RequestObject.responseText != "No-Refresh") {
  4.             if (RequestObject.responseText.indexOf('invalid') == -1) {
  5.                 msgs = RequestObject.responseText.split('|');
  6.                 document.getElementById("quickSummary").innerHTML = msgs[0];
  7.             } else {
  8.                 document.getElementById("quickSummary").innerHTML = "Error llamando";
  9.             }
  10.         }
  11.     }
  12. }
Así, si devuelves como respuesta "No-Refresh" no se va a realizar ningún cambio en el elemento.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 08/06/2009, 06:02
 
Fecha de Ingreso: octubre-2008
Mensajes: 19
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: No actualizar si no hay cambios

Gracias David, pero tengo que hacerlo con jquery.

Encontré la función denominada $.loadIfModified() que carga la respuesta del servidor en el elemento sólo si esa respuesta es diferente a la última recibida. Pero no funciona...parece ser que se ha quedado en el olvido.

Algún crack de jquery que me pueda ayudar?
  #12 (permalink)  
Antiguo 08/06/2009, 07:34
 
Fecha de Ingreso: octubre-2008
Mensajes: 19
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: No actualizar si no hay cambios

En la página oficial de jquery he encontrado esto:

$("#elem").loadIfModified("some.php")
This convenience method is being removed in favor of the long form use of $.ajax():

$.ajax({
url: "some.php",
ifModified: true,
success: function(html){
$("#elem").html(html);
}
});

Así que hay que hacerlo por ese camino...
  #13 (permalink)  
Antiguo 08/06/2009, 07:46
 
Fecha de Ingreso: octubre-2008
Mensajes: 19
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: No actualizar si no hay cambios

Lo conseguí, y este es el script:

<script type="text/javascript">
$(document).ready(function (){
$.ajax({
url: "enlinea.php",
success: function(html){
$("#capa").html(html);
}
});
});

setInterval('llamarPagina();', 10000);
function llamarPagina(){
$.ajax({
url: "enlinea.php",
ifModified: true,
success: function(html){
$("#capa").html(html);
}
});
}
</script>

IMPORTANTE:

<?php
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
?>

Ya que como el servidor no te lo guarde automaticamente, no funciona.

Conclusión:

Sigo viendo un corte de velocidad "muy pequeño" en el texto (ver jquery.marquee) cada vez que accedo al archivo en cuestion, da igual que haya sido modificado o no. Por tanto, cuestiono el uso de la función final utilizada ya que no la veo mas eficiente que el primer script:

<script type="text/javascript">
setInterval('llamarPagina();', 10000);
function llamarPagina(){
$("#capa").load('enlinea.php');
}
</script>

Haciendo uso de la función "load".

Espero que alguien más haya aprendido sobre esto.

1saludo.
  #14 (permalink)  
Antiguo 20/12/2011, 16:26
 
Fecha de Ingreso: marzo-2011
Ubicación: Punta de Mata
Mensajes: 106
Antigüedad: 6 años, 11 meses
Puntos: 0
Respuesta: No actualizar si no hay cambios

holajustamente tengo ese problem, se ya encontraste ese codigo me ayudaras por favor, yo tengo es un sistema de comentario la cual debe actualizarse si en la base de datos hay nuevos registro y no encuentroi que codigo paner por que se actualiuza cada 12segundos y no en realida es lo que quiero y los ususarios de comentan vallan a copiuar automaticamente se borra y quiero que ayude por favor se lo agradezco
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:42.