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

if para actualizar div solo si hay cambios

Estas en el tema de if para actualizar div solo si hay cambios en el foro de Frameworks JS en Foros del Web. Hola tengo un codigo jquery el cual me actualiza un div cada 10 segundos...pero quiero que solo lo actualic si hay cambios...osea que haga la ...
  #1 (permalink)  
Antiguo 01/09/2011, 10:13
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
if para actualizar div solo si hay cambios

Hola tengo un codigo jquery el cual me actualiza un div cada 10 segundos...pero quiero que solo lo actualic si hay cambios...osea que haga la peticion y eso...pero si la respuesta es igual a la ya mostrada entonces no actualizar...como se hace...me imagino qe eso es de un if no?

gracias dejo el codigo

Código Javascript:
Ver original
  1. <script>
  2.  $(document).ready(function() {
  3.      $("#todos_actualizar").load("response.php");
  4.    var refreshId = setInterval(function() {
  5.       $("#todos_actualizar").load('response.php?randval='+ Math.random());
  6.    }, 10000);
  7.                            
  8.    $.ajaxSetup({ cache: false });
  9.                            
  10. });
  11. </script>
  12. </script>
  #2 (permalink)  
Antiguo 01/09/2011, 11:09
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: if para actualizar div solo si hay cambios

entonces no deberías usar $().load el cual simplemente carga, usa $.ajax() y dentro de la función delegada de success (onreadystatechange) compara con if el valor devuelto del actual y actualiza en caso de diferencia
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 01/09/2011, 11:20
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: if para actualizar div solo si hay cambios

maycolalvarez primero que todo hola...y gracias por responder.....y bueno es que la verdad me dejaste O.o

es que mira...la verdad no se muy bien de lo q me hablas se que es el ajax y eso...pero el bendito curso de AJAX que voy a hacer...empieza para dentro de un mes ¬¬...quien sabe si despues.....entonces no entendi muy bien lo q me dijiste...me puedes complementar el codigo que tengo o darme uno que funcione como le explique?...porfavor....y por lo q veo somos paisanos eh....usted es de venezuela tambien...:D
  #4 (permalink)  
Antiguo 02/09/2011, 07:49
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: if para actualizar div solo si hay cambios

Como lo haria compañero maycolalvarez de verdad...q lo necesito.....porfavor...ayuda
  #5 (permalink)  
Antiguo 02/09/2011, 07:59
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: if para actualizar div solo si hay cambios

deberias empeñarte en buscar más información, si usas jQuery sabes que $().load() es solo un atajo de la verdadera función $.ajax() y si consultas en la API de jQuery podrás avanzar al respecto.

inténtalo, trata de hacer algo de código, verás que no es difícil y si no puedes más postea el código, de esa forma es mejor ayudarte, pero hacerte el trabajo... lo veo difícil (sí, soy cruel), suerte
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #6 (permalink)  
Antiguo 02/09/2011, 08:02
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: if para actualizar div solo si hay cambios

O.o...seguire buscando entonces....una preguntica mas para usted....porseacaso usted no sabe algun curso de jquery o ajax en maracay? porsupuesto...Venezuela...ya que usted es de caracas...pienso q alomejor sepa pero aqui en maracay
  #7 (permalink)  
Antiguo 02/09/2011, 08:04
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: if para actualizar div solo si hay cambios

compañero acabo de encontrar esta funcion...."ifModified" como la uso en mi codigo?
  #8 (permalink)  
Antiguo 02/09/2011, 08:24
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: if para actualizar div solo si hay cambios

fijáte no me había percatado de ella, por lo que veo en la API es una propiedad, colocarla como true en el JSON de la función $.ajax()

http://api.jquery.com/jQuery.ajax/

de cursos en Maracay ni idea, en Caracas hay muchas empresas que ofrecen cursos: Bellinsoft, GALA, Lourtec, Keys, Itelca, etc. pero cursos específicos de jQuery lo dudo
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #9 (permalink)  
Antiguo 02/09/2011, 09:44
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: if para actualizar div solo si hay cambios

maycolalvarez y no se podria hacer...lo siguiente?: con el metodo getelementbyid rescato el contenido de div #todos_actualizar y luego con un if...comparo...si son iguales actualizar...de lo contrario no actualizar....pero trato de hacerlo y no logro nada...como deberia hacerlo =???
  #10 (permalink)  
Antiguo 02/09/2011, 10:32
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: if para actualizar div solo si hay cambios

esa es precisamente la primera opción que te indique, y como tal te dije que con $().load() no podrás hacerlo, sólo con $.ajax()

la verdad es que si no lo intentas es imposible seguir ayudándote, decide de una vez, es algo muy fácil de hacer.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #11 (permalink)  
Antiguo 02/09/2011, 11:00
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: if para actualizar div solo si hay cambios

wahhhhhhhhhh maycolalvarez ya tengo esto con la funcion $.ajax()


$.ajax({
url: 'response.php?randval=<? echo $vari=rand();?>',
success: function(data) {
$('#todos_actualizar').html(data);
}
});

ahora me falta hacerlo...que se repita cada cierto tiempo...y lo de actualizar si hay cambios o no....guieme porfavor...voy a tratar de hacer mas....
  #12 (permalink)  
Antiguo 02/09/2011, 12:54
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: if para actualizar div solo si hay cambios

maycolalvarez Hola nuevamente....y mire tengo esto...

Código Javascript:
Ver original
  1. function update() {
  2.   $("#notice_div").html('Loading..');
  3.   $.ajax({
  4.     type: 'post',
  5.     url: 'response.php?randval=<? echo $vari=rand();?>',
  6.     timeout: 2000,
  7.     success: function(data) {
  8.       $("#todos_actualizar").html(data);
  9.       $("#todos_actualizar").html('');
  10.       window.setTimeout(update, 1000);
  11.     },
  12.     error: function (XMLHttpRequest, textStatus, errorThrown) {
  13.       $("#todos_actualizar").html('Timeout contacting server..');
  14.       window.setTimeout(update, 6000;
  15.     }
  16. }

hice eso compañero pero no logro que haga algo...nisiquiera muestra...digame que error tengo...y que el debo colocar para q haga lo que yo quiero de eso..que actualic solo si hay cambios.....de verdad...ya no se que mas hacer...necesito esto...y bueno le doi las gracias por hacerme pensar y pensar..pero de verdad...por los momentos hasta ese codigo puedo llegar...y nisiquiera funciona O.o....ayuda porfavor

Última edición por spirron589; 02/09/2011 a las 13:11
  #13 (permalink)  
Antiguo 02/09/2011, 16:01
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: if para actualizar div solo si hay cambios

te voy a comentar en el código lo que no es lógico:

Código Javascript:
Ver original
  1. function update() {
  2.       $("#notice_div").html('Loading..'); // ¿que se supone que hace esto?: si es lo que creo no va aquí
  3.       $.ajax({
  4.         type: 'post',
  5.         url: 'response.php?randval=<? echo $vari=rand();?>',
  6.         timeout: 2000,  // ¿un máximo de espera de 2 segundos para la petición?
  7.         success: function(data) {
  8.           $("#todos_actualizar").html(data); //se supone que aquí comparas
  9.           $("#todos_actualizar").html(''); // ¿NO entiendo para que borras de nuevo el contenido!!!?
  10.           window.setTimeout(update, 1000); // ¿no es más factible usar un setInterval global?
  11.         },
  12.         error: function (XMLHttpRequest, textStatus, errorThrown) {
  13.           $("#todos_actualizar").html('Timeout contacting server..');
  14.           window.setTimeout(update, 6000; // ERROR de sintaxis
  15.         }
  16.     }
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #14 (permalink)  
Antiguo 03/09/2011, 07:17
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: if para actualizar div solo si hay cambios

no pues ya me doi por vencido...al parecer no lograre hacerlo bien...de todas formas gracia...
  #15 (permalink)  
Antiguo 03/09/2011, 15:21
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: if para actualizar div solo si hay cambios

maicolalvares lo consegui hacer con ajax....pero trato de hacerle el if...y no hace lo q deberia hacer...osea actualizar si hay cambios si no no.....

Código Javascript:
Ver original
  1. <script>
  2.  
  3. var RequestObject = false;
  4.   var Archivo = ' response.php?randval=<? echo $vari=rand(); ?>';
  5.  
  6.   window.setInterval("actualizacion_reloj()", 5000); // el tiempo X que tardará en actualizarse
  7.   if (window.XMLHttpRequest)
  8. RequestObject = new XMLHttpRequest();
  9. if (window.ActiveXObject)  
  10.   RequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  11. function ReqChange() {
  12.  
  13.   if (RequestObject.readyState==4) {
  14.  
  15.       if (RequestObject.responseText.indexOf('invalid') == -1)
  16.       {
  17.  
  18.       var msgs = RequestObject.responseText.split('|');
  19.  
  20.       document.getElementById("todos_actualizar").innerHTML = msgs[0];
  21.  
  22.  
  23.       }
  24.       else {
  25.    
  26.       document.getElementById("todos_actualizar").innerHTML = "###";
  27.       }
  28.   }
  29. }
  30. function llamadaAjax() {
  31.  
  32.   RequestObject.open("GET", Archivo , true);
  33.   RequestObject.onreadystatechange = ReqChange;
  34.  
  35.   RequestObject.send(null);
  36.   }
  37.   function actualizacion_reloj() {
  38.     llamadaAjax();
  39.   }
  40.  
  41. </script>

pienso que el if deberia de ir en la parte de document.getElementById("todos_actualizar").innerH TML = msgs[0]; osea alli es donde cambia el contenido html no?

pero le pongo el if alli y no funciona....

Última edición por spirron589; 03/09/2011 a las 15:31
  #16 (permalink)  
Antiguo 04/09/2011, 10:41
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: if para actualizar div solo si hay cambios

1 - desde el principio utilizaste AJAX con jQuery
2 - te estás complicando demasiado, tu problema NO es el código, sino de ANÁLISIS

piensa ¿que necesito para comparar?: el valor de mi capa actual y el valor devuelto por el servidor (ajax)

¿como obtengo tales valores?:
1- el valor de ajax lo obtengo desde la variable data pasada por jQuery (... success: function(data) {...) o RequestObject.responseText si uso el XmlHttpRequest Normal

2 - el valor de mi capa lo obtengo con jQuery así: var capa = $("#todos_actualizar").html(); o usando var capa = document.getElementById('todos-actualizar').innerHTML;

ya tengo mis 2 valores ¿como comparo?: con un if:

Código Javascript:
Ver original
  1. //...
  2. success: function(data) {
  3. var capa = $("#todos_actualizar").html();
  4. if (data != capa){
  5.     $("#todos_actualizar").html(data);
  6. }
  7. }
  8. //...
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #17 (permalink)  
Antiguo 04/09/2011, 11:04
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: if para actualizar div solo si hay cambios

maycolalvares yo lo tengo asi....y aun no me funciona..porq usted me lo muestra con jquery yo..lo estoy haciendo en base a ajax...pero sigue sin funcionar...que me falta-'??

Código Javascript:
Ver original
  1. <script>
  2.  
  3. var RequestObject = false;
  4.   var Archivo = ' response.php?randval=<? echo $vari=rand(); ?>';
  5.  
  6.   window.setInterval("actualizacion_reloj()", 5000); // el tiempo X que tardará en actualizarse
  7.   if (window.XMLHttpRequest) //
  8. RequestObject = new XMLHttpRequest();
  9. if (window.ActiveXObject)  
  10.   RequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  11. function ReqChange() {
  12.  
  13.   if (RequestObject.readyState==4) {
  14.  
  15.       if (RequestObject.responseText.indexOf('invalid') == -1)
  16.       {
  17.      var div = document.getElementById("todos_actualizar").innerHTML;
  18.       var msgs = RequestObject.responseText.split('|');      
  19.      if(div!=msgs){
  20.        document.getElementById("todos_actualizar").innerHTML = msgs[0];
  21.      }
  22.       }
  23.       else {
  24.    
  25.       document.getElementById("todos_actualizar").innerHTML = "###";
  26.       }
  27.   }
  28. }
  29. function llamadaAjax() {
  30.  
  31.   RequestObject.open("GET", Archivo , true);
  32.  RequestObject.onreadystatechange = ReqChange
  33.  
  34.  
  35.   RequestObject.send(null);
  36.  
  37.  
  38.   }
  39.   function actualizacion_reloj() {
  40.     llamadaAjax();
  41.   }
  42.  
  43. </script>
  #18 (permalink)  
Antiguo 04/09/2011, 13:26
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: if para actualizar div solo si hay cambios

1 - no se puede comparar un string contra un array (div!=msgs) , investigue que hace y que devuelve la función split: http://www.w3schools.com/jsref/jsref_split.asp

2 - no se evalúa XmlHttpRequest.status==200 fallo al implementar estándar HTTP en petición AJAX, consulte un manual de AJAX
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Última edición por maycolalvarez; 04/09/2011 a las 13:46 Razón: ==
  #19 (permalink)  
Antiguo 04/09/2011, 13:39
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: if para actualizar div solo si hay cambios

ya vi...el split devuelve un array de todos los elementos..porq si se lo quito me devuelve un solo "<" que es lo primero de la respuesta....y lo ultimo del status=200 eso si no lo entendi....y bueno busque y busque pero no....no actualiza cuando hay cambios....
  #20 (permalink)  
Antiguo 04/09/2011, 13:43
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: if para actualizar div solo si hay cambios

el ultimo codigo q consegui fue este....pero el problema es q no me actualiza periodicamente...

Código Javascript:
Ver original
  1. <script>
  2.     $.ajax({
  3.    url: ' response.php?randval=<? echo $vari=rand(); ?>',
  4.    
  5.    success: function(data) {
  6.      $('#todos_actualizar').html(data);
  7.      alert('Load was performed.');
  8.    }
  9.  });

entiendo le falta el setInterval pero se lo coloco y luego no funciona...lo pongo en otra parte del codigo y tampoco funciona......y alli....si puedo hacer la validacion...que usted me dio la ultima q me dio usted
  #21 (permalink)  
Antiguo 04/09/2011, 13:48
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: if para actualizar div solo si hay cambios

en reiteradas oportunidades te alenté a consultar un manual de AJAX para comprender el funcionamiento, allí sabrás el porque del status==200 que más bien forma parte del protocolo HTTP

cazar códigos no resolverá tu problema, a lo sumo para implementar un setInterval necesitas una función (function), así que debes empezar por programación estructurada
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #22 (permalink)  
Antiguo 04/09/2011, 20:25
 
Fecha de Ingreso: agosto-2011
Ubicación: Venezuela
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: if para actualizar div solo si hay cambios

trate de hacer dos divs uno oculto donde ponia la informacion nueva...y entonces rescataba su contenido....y lo almacenaba en una variable...lo mismo hacia con el div el cual debe actualizar....

entonces hacia el if...si los dos divs no eran iguales..actualizar...pero no funciono...igual actualizaba...


este es el codigo normal como lo tengo ahorita pero no funciona como debe de ser

Código Javascript:
Ver original
  1. function refresh(){
  2.         $.ajax({
  3.             url: " response.php?randval=<? echo $vari=rand(); ?>",
  4.              
  5.             ifModified:true,
  6.             success: function(content,status){
  7.                 if (status != "notmodified") {  
  8.                 $("#todos_mensajes_actualizar").html(content);
  9.                
  10.     }else{
  11.        
  12.     }
  13.  
  14.             }
  15.         });
  16.        
  17.         setTimeout(function(){
  18.             refresh();
  19.         }, 3000);
  20.     }
  21. $(function(){
  22.         refresh();
  23.     });

la variable ifModifield....no funciona o si pero no se como usarla


Creeme si pudiera le pusiese a este post no me gusta...porq de verdad ya me tiene loco...y me imagino q usted debe estar similar...disculpe

Etiquetas: ajax, cambios, jquery
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:41.