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

Remarcar cambios al recargar contenido

Estas en el tema de Remarcar cambios al recargar contenido en el foro de Frameworks JS en Foros del Web. Buenas, Tengo el siguiente código abro inciso ¿se puede de alguna manera más optima? cierro inciso En este pequeño ejemplo muestro el contenido de una ...
  #1 (permalink)  
Antiguo 01/03/2010, 13:04
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Remarcar cambios al recargar contenido

Buenas,

Tengo el siguiente código abro inciso ¿se puede de alguna manera más optima? cierro inciso

En este pequeño ejemplo muestro el contenido de una tabla dentro de un DIV llamado "tabla1", y cada 5 segundos recarga la tabla.

La tabla de ejemplo tiene una celda que es el precio esta es la zona que puede variar. Mi intención es marcar de alguna forma cuando el precio baje o suba.

La pregunta... creéis que esto lo debo hacer en el propio código donde se crea la tabla (datos_ajax.php) o en el script principal que llama a la función ajax (script.php)?

La siguiente sería, cómo implementarlo, alguna idea?

La tabla se generaría de forma automática leyendo los datos de la base de datos, tendría que hacer un script que cada 5 segundos me generase el fichero datos_ajax.php verdad?
Pero si tuviese que tener 200 tablas de precios, tendría que cada 5 segundos generar los 200 ficheros uno para cada tabla distinta? ¿se hace así en la realidad? o me estoy flipando... xD me parece muy heavy!

Muchas gracias de antemano!


datos_ajax.php
Código HTML:
Ver original
  1. <table border="1">
  2. <tr>
  3.     <th>Producto</th>
  4.     <th>Precio</th>
  5. </tr>
  6. <tr>
  7.     <td>Manteca</td>
  8.     <td>4.00</td>
  9. </tr>
  10. <tr>
  11.     <td>Leche</td>
  12.     <td>2.50</td>
  13. </tr>

script.php
Código PHP:
Ver original
  1. <html>
  2.   <head>
  3.   <title>Obteniendo datos con AJAX sin recargar pagina</title>
  4.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. </head>
  6. <script language="javascript"  type="text/javascript">
  7. var RequestObject = false;
  8.   var Archivo = 'datos_ajax.php'; //directorio donde tenemos el archivo ajax.php
  9.   window.setInterval("actualizacion_reloj()", 5000); // el tiempo X que tardará en actualizarse
  10.   if (window.XMLHttpRequest) //
  11. RequestObject = new XMLHttpRequest();
  12. if (window.ActiveXObject)  
  13.   RequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  14. function ReqChange() {
  15. // Si se ha recibido la información correctamente
  16.   if (RequestObject.readyState==4) {
  17.   // si la información es válida
  18.       if (RequestObject.responseText.indexOf('invalid') == -1)
  19.       {
  20.       // obtener la respuesta
  21.       var msgs = RequestObject.responseText.split('|');
  22.       // Buscamos la div con id online
  23.       document.getElementById("tabla1").innerHTML = msgs[0];
  24.       }
  25.       else {
  26.       // Por si hay algun error
  27.       document.getElementById("tabla1").innerHTML = "Error llamando";
  28.       }
  29.   }
  30. }
  31. function llamadaAjax() {
  32.  // Mensaje a mostrar mientras se obtiene la información remota...
  33.   //document.getElementById("tabla1").innerHTML = "";
  34.   // Preparamos la obtención de datos
  35.   RequestObject.open("GET", Archivo , true);
  36.   RequestObject.onreadystatechange = ReqChange;
  37.   // Enviamos
  38.   RequestObject.send(null);
  39.   }
  40.   function actualizacion_reloj() {
  41.     llamadaAjax();
  42.   }
  43. </script>
  44. <body onload="llamadaAjax();">
  45. <h2>Obteniendo datos con AJAX sin recargar pagina </h2>
  46.   <div id="tabla1"></div>
  47. </body>
  48. </html>
  #2 (permalink)  
Antiguo 01/03/2010, 13:49
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 16 años
Puntos: 0
Respuesta: Remarcar cambios al recargar contenido

Todavía soy principiante, pero a ver si te puedo ser algo de ayuda al menos.
Suponiendo que los productos sean estáticos, sólo varíe el precio. Personalmente, lo que yo haría sería asignarle un id a cada celda de la tabla que contiene el precio de un producto. Y por ajax, en vez de cargar tooda la tabla, obtener los datos en forma de arrays asociativos. Y luego con Javascript comparar el nuevo valor con el que está en la tabla. Si varía, lo modifica y resalta con algún efecto, y si no pues nada.
También usaría algún framework como jQuery, tanto para la parte de AJAX como para los efectos (el effecto highlight de jQuery sería ideal).

El tema de las 200 tablas, ya no sabría que decirte.

Perdona que no escriba algún código de ejemplo, pero no tengo demasiado tiempo.
A ver si alguien tiene alguna idea mejor.
Un saludo!
  #3 (permalink)  
Antiguo 01/03/2010, 15:09
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Remarcar cambios al recargar contenido

Cita:
Iniciado por sloy Ver Mensaje
Suponiendo que los productos sean estáticos, sólo varíe el precio. Personalmente, lo que yo haría sería asignarle un id a cada celda de la tabla que contiene el precio de un producto. Y por ajax, en vez de cargar tooda la tabla, obtener los datos en forma de arrays asociativos.
Me parece una idea interesante, los id a cada celda deberían ser también dinamicos o estaticos? me refiero porque la tabla cambiará es dinamica pueden aparecer nuevas filas dependiendo de lo que devuelva la consulta SQL :S

Cita:
Iniciado por sloy Ver Mensaje
El tema de las 200 tablas, ya no sabría que decirte.

Perdona que no escriba algún código de ejemplo, pero no tengo demasiado tiempo.
A ver si alguien tiene alguna idea mejor.
Un saludo!
Yo tambien, sigo sin ver la forma optima de realizarlo a gran escala :P

Se aceptan opiniones!

Muchas gracias

Etiquetas: ajax, cambios, contenido, recargar
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:20.