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

Actualizar pagina sin recargar

Estas en el tema de Actualizar pagina sin recargar en el foro de Frameworks JS en Foros del Web. Hola a todos, Se que hay muchos temas como este, pero este es distinto. Veamos, aqui tengo el codigo para hacer esto posible: Código: <script ...
  #1 (permalink)  
Antiguo 21/10/2008, 13:33
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 1
De acuerdo Actualizar pagina sin recargar

Hola a todos,
Se que hay muchos temas como este, pero este es distinto.
Veamos, aqui tengo el codigo para hacer esto posible:

Código:
<script language="javascript"  type="text/javascript">
var RequestObject = false; 
  var Archivo = 'reload.php'; // Archivo a actualizar
  window.setInterval("actualizacion_reloj()", 1000); // el tiempo X que tardará en actualizarse 
  if (window.XMLHttpRequest) // 
RequestObject = new XMLHttpRequest();
if (window.ActiveXObject)	
  RequestObject = new ActiveXObject("Microsoft.XMLHTTP");
function ReqChange() {
// Si se ha recibido la información correctamente
  if (RequestObject.readyState==4) {
  // si la información es válida 
  if (RequestObject.responseText.indexOf('invalid') == -1) 
  { 
  // obtener la respuesta 
  var msgs = RequestObject.responseText.split('|');
  // Buscamos la div con id online 

  document.getElementById("online").innerHTML = msgs[0];
 
  }
  else {
  // Por si hay algun error 
  document.getElementById("online").innerHTML = "Error llamando";
  }
  }
  }
function llamandonline() {
 // Mensaje a mostrar mientras se obtiene la información remota...
  document.getElementById("online").innerHTML = "";
  // Preparamos la obtención de datos 
  RequestObject.open("GET", Archivo , true);
  RequestObject.onreadystatechange = ReqChange;
  // Enviamos 
  RequestObject.send(null); 
  }
  function actualizacion_reloj() {
  llamandonline();
  }
</script>
Código HTML:
<div id="online">AQUI VA EL ARCHIVO QUE SE RECARGA</div> 
El caso es que en mi pagina, cuando muestro los resultados actualizados, desaparece unos instantes lo que es el reload.php, por lo que lo que está debajo de éste (tablas y texto) sube debido a la ausencia de reload.php, y parece un circo.

Querria dos cosas,
1) Si lo que hay dentro del DIV es igual a la de la recarga, que no refresque ésta.
He probado con

Código:
  if( document.getElementById("online").innerHTML !== msgs[0] ){
  document.getElementById("online").innerHTML = msgs[0];
  }
Pero no tuve suerte, a ver si ustedes me lo resuelven.

2) Que refresque cuando tenga definitivamente cargado el archivo, porque parpadea y no deberia si el ReadyState está en 4.

Si el segundo no puede resolverse, que le vamos a hacer =( fallo de las programaciones.

Un saludo y muchas gracias.
  #2 (permalink)  
Antiguo 21/10/2008, 13:58
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Actualizar pagina sin recargar

Quitando la linea:

document.getElementById("online").innerHTML = "";

Hace que no se reemplace nada mientras está procesando el httprequest, y por consiguiente no desaparece el contenido, pero hay momentos que SÍ que desaparece durante un momento...
Aun quedaría el (1), si el DIV es igual a lo que vamos a recargar, que no lo recargue :S

Saludos y muchisimas gracias de antemano, sois geniales.

Última edición por filmixt; 21/10/2008 a las 14:06
  #3 (permalink)  
Antiguo 22/10/2008, 07:13
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 1
Exclamación Respuesta: Actualizar pagina sin recargar

De acuerdo, lo voy a explicar mejor, por que es de lo MAS SENCILLO, pero no conozco la sintaxis del ajax:

Simplemente quiero crear un IF que diga:

IF( Contenido actual del <DIV id="online"> es IGUAL a lo que vamos a actualizar (Es decir, el html que obtenemos de la actualización que hemos solicitado), si es igual, NO actualizar, en cambio, SI HAY diferencia [¿!==?], actualizar )

Este if estaría debajo de llamandonline(){ y acabaria al final de este.

Un saludo y a ver si alguien tiene un minutillo libre para decirlo
  #4 (permalink)  
Antiguo 22/10/2008, 08:41
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Actualizar pagina sin recargar

Te has fijado en esto???

if( document.getElementById("online").innerHTML !== msgs[0] ){
document.getElementById("online").innerHTML = msgs[0];
}

No se si lo tendrás así en tu código

Saludos

Pd: Por cierto, vi tu pagina de descarga directa de pelis, que currada, enhorabuena!!!
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #5 (permalink)  
Antiguo 22/10/2008, 12:51
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Actualizar pagina sin recargar

Hola, si.
Resulta que es que... hay que establecer eso en algun sitio determinado.

Si pongo esto:

Código HTML:
function llamandonline() {

  // Preparamos la obtención de datos 
  RequestObject.open("GET", Archivo , true);
  RequestObject.onreadystatechange = ReqChange;
  // Enviamos 
  if( document.getElementById("online").innerHTML !== msgs[0] ){
  RequestObject.send(null); 
  }
  }
Resulta que no recarga para nada, aunque haya cambiado la pagina.

Y gracias por el comentario
Creo que nunca mencioné la web: filmixt.com

Saludos y a ver si alguien consigue solucionarlo, seria muy util, gracias.
  #6 (permalink)  
Antiguo 23/10/2008, 07:26
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Actualizar pagina sin recargar

No me has entendido,...

A lo que yo me refiero es que distinto es != y no !==

Saludos,...
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #7 (permalink)  
Antiguo 23/10/2008, 09:07
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Actualizar pagina sin recargar

Vale, eso lo entiendo.
Pero no sabria interpretar suficientemente bien el codigo como para saber de que modo hacer para que no recarge una vez que tiene los datos nuevos y los antiguos...

Hay alguien aquí que sepa hacer un IF para que no actualice en caso de que lo que ya hay dentro del DIV y lo que se va a incluir nuevamente en la autorecarga?

Un saludo y gracias.
  #8 (permalink)  
Antiguo 24/10/2008, 01:25
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Actualizar pagina sin recargar

A ver si esto te puede ayudar...

Código javascript:
Ver original
  1. function actMensajeria(datos){
  2.   divcontenido_mensajeria = document.getElementById('contenido_mensajeria');
  3.   ajaxActMsg=objetoAjax();
  4.     ajaxActMsg.open("GET", datos);
  5.     ajaxActMsg.onreadystatechange=function() {
  6.         if (ajaxActMsg.readyState==4) {
  7.                    if(ajaxActMsg.responseText.length > 5){
  8.                        //alert("-"+ajax.responseText+"-"+ajax.responseText.length+"-");
  9.                        divcontenido_mensajeria.innerHTML = ajaxActMsg.responseText;
  10.                    }
  11.         }
  12.     }
  13.   ajaxActMsg.send(null)
  14. }

Esta es una función que yo tengo para actualizar la mensajería interna de una aplicación que estoy programando. Se ejecuta periódicamente cada minuto. La cosa es que si el usuario no tiene ningun mensaje nuevo no realiza el innerHTML. Cuando la programe hice...

Código javascript:
Ver original
  1. ajaxActMsg.onreadystatechange=function() {
  2.         if (ajaxActMsg.readyState==4) {
  3.                    if(ajaxActMsg.responseText.length !=0){                      
  4.                        divcontenido_mensajeria.innerHTML = ajaxActMsg.responseText;
  5.                    }
  6.         }
  7.     }

Que pasa, que me di cuenta que siempre me realizaba el innerHTML, aunque no escribiera nada. Entonces realice la siguiente comprobación

Código javascript:
Ver original
  1. alert("- "+ajax.responseText+"- "+ajax.responseText.length+" -");

Cuando el servidor respondía con una página en blanco el alert me resultaba


- - 4 -


de ahi que pusiera...

Código javascript:
Ver original
  1. ajaxActMsg.onreadystatechange=function() {
  2.         if (ajaxActMsg.readyState==4) {
  3.                    if(ajaxActMsg.responseText.length > 5){
  4.                        //alert("-"+ajax.responseText+"-"+ajax.responseText.length+"-");
  5.                        divcontenido_mensajeria.innerHTML = ajaxActMsg.responseText;
  6.                    }
  7.         }
  8.     }

Puede que por algun bit de control o algo asi difiera el contenido del div del contenido del respose, aunque estos sean iguales. Comprueba con un alert ambos contenidos

Código javascript:
Ver original
  1. alert (document.getElementById("online").innerHTML.length);
  2. alert (ajax.responseText.length);

Espero te ayude,...

Saludos
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #9 (permalink)  
Antiguo 25/10/2008, 06:11
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Actualizar pagina sin recargar

No se como usar lo que has dicho, puedes incorporarlo a mi codigo? :S
Saludos y gracias.
  #10 (permalink)  
Antiguo 27/10/2008, 02:21
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Actualizar pagina sin recargar

Prueba asi,...

Código javascript:
Ver original
  1. <script language="javascript"  type="text/javascript">
  2. var RequestObject = false;
  3.   var Archivo = 'reload.php'; // Archivo a actualizar
  4.   window.setInterval("actualizacion_reloj()", 1000); // el tiempo X que tardará en actualizarse
  5.   if (window.XMLHttpRequest) //
  6. RequestObject = new XMLHttpRequest();
  7. if (window.ActiveXObject)  
  8.   RequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  9. function ReqChange() {
  10. // Si se ha recibido la información correctamente
  11.   if (RequestObject.readyState==4) {
  12.   ////////////////////////////////// AQUI
  13.  // PRUEBA CUANDO EN TEORIA SON IGUALES Y NO TIENE QUE ACTUALIZAR
  14. //A VER SI DIFIEREN LOS TAMAÑOS
  15.   alert (RequestObject.responseText.length);
  16.   alert(document.getElementById("online").innerHTML.length);
  17.  
  18.   }
  19.   else {
  20.   // Por si hay algun error
  21.   document.getElementById("online").innerHTML = "Error llamando";
  22.   }
  23.   }
  24.   }
  25. function llamandonline() {
  26.  // Mensaje a mostrar mientras se obtiene la información remota...
  27.   document.getElementById("online").innerHTML = "";
  28.   // Preparamos la obtención de datos
  29.   RequestObject.open("GET", Archivo , true);
  30.   RequestObject.onreadystatechange = ReqChange;
  31.   // Enviamos
  32.   RequestObject.send(null);
  33.   }
  34.   function actualizacion_reloj() {
  35.   llamandonline();
  36.   }
  37. </script>

No se muy bien si es asi porque no entendía muy bien esta parte del código

Código javascript:
Ver original
  1. if (RequestObject.responseText.indexOf('invalid') == -1)
  2.   {
  3.   // obtener la respuesta
  4.   var msgs = RequestObject.responseText.split('|');
  5.   // Buscamos la div con id online
  6.  
  7.   document.getElementById("online").innerHTML = msgs[0];
  8.  
  9.   }

Saludos
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #11 (permalink)  
Antiguo 31/10/2008, 09:37
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Actualizar pagina sin recargar

Mm, no me sirve, no recarga si quiera. De todas maneras la longitud sera igual, porque solo cambia algunos numeros. Normalmente hay 20-40 usuarios en la web, y eso no actualizará.
Saludos.
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 18:39.