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

Actualizar sin recargar AJAX

Estas en el tema de Actualizar sin recargar AJAX en el foro de Frameworks JS en Foros del Web. Saludos maestros. Miren estoy haciendo un trabajo en AJAX este trabajo necesita actualizar la pagina cuando se cambie algun dato de la BD pero sin ...
  #1 (permalink)  
Antiguo 27/03/2006, 08:57
 
Fecha de Ingreso: febrero-2003
Mensajes: 84
Antigüedad: 21 años, 2 meses
Puntos: 0
Actualizar sin recargar AJAX

Saludos maestros.

Miren estoy haciendo un trabajo en AJAX este trabajo necesita actualizar la pagina cuando se cambie algun dato de la BD pero sin recargarla y si en caso no se de algun cambio entonces que no se actualize.


Espero que me puedan ayudar .
Gracias.
  #2 (permalink)  
Antiguo 27/03/2006, 11:07
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Tu aplicación (tu trabajo) no puede enterarse mágicamente que un dato en tu base de datos ha cambiado.

Para enterarse, tu aplicación debe preguntárselo a la DB directamente, pero resulta que tu aplicación no puede tampoco adivinar el momento 'oportuno' para preguntarle.

De manera que la solución es, que contínuamente le estés preguntando a tu base de datos si esta ha cambiado (tú defines el tiempo), y dependiendo de la respeta que tu DB te dé, tomas las decisiones que tú quieras.

Por ejemplo para un chat en AJAX, que funcionan bajo el mismo principio, tú eliges que, por ejemplo, se consulte la Base de Datos cada 3 segundos.

Una aplicación más "inteligente" podría determinar por sí misma la frecuencia con la que consultará a la BD. Por ejemplo en un chat podría ser:

- Si la sala está llena de gente, consulta cada 0.50 segundos.
- Si son pocos, consulta cada 3 segundos.
- etc, etc.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #3 (permalink)  
Antiguo 27/03/2006, 11:18
 
Fecha de Ingreso: febrero-2003
Mensajes: 84
Antigüedad: 21 años, 2 meses
Puntos: 0
Gracias brother la solucion me sirve , dime tendrias algun ejemplo o direccioon de un ejemplo como el que me acabas de comentar para poder ver el codigo y tratar de adaptarlo a mi trabajito :)

de verdad Muchas gracias.
  #4 (permalink)  
Antiguo 27/03/2006, 20:57
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
El ejemplo tal cuál no lo tengo, pero para hacerlo, ya que necesitas pedirle a la base de datos cada cierto tiempo que te dé información, necesitas un dominio moderado de Javascript para que continuamente estés llamando a un evento y sea ese evento el que, mediante el objeto XMLHttpRequest, sea el que esté preguntando contínuamente si la base de datos ha cambiado.

Mira, así que digas "súper-complicado", no es.

Te doy unas ideas de cómo comenzaría yo a resolver este problema (un plan, puede que tú encuentre uno más fácil), nota que el paso 3 es el típico ejemplo de cómo se usa AJAX que encuentras en cualquier tutorial:

1) Poner un botón de formulario que al pulsarlo, me devuelva una ventanita ALERT con el mensaje "hola mundo".

2) El mismo botón, pero ahora al presionarlo, escribe "hola mundo" en un DIV utilizando para ello la función getElementById()

3) El mismo botón, pero ahora al presionarlo, me crea un objeto XMLHttpRequest y le pide a una página que le devuelva algo, un "hola mundo" por ejemplo. Este es un simple:

echo "hola mundo"

...que no va a extraer de ninguna DB, pues aquella página, nombrémosla paginaprueba.php, lo único que hace es imprimir "hola mundo". La impresión la hará en el DIV que ya habíamos creado.

4) El mismo botón, pero ahora le pide a la página paginaprueba.php que se conecte a la base de datos y que extraiga un campo de alguna tabla, para decirle qué campo, se lo decimos por medio de un parámetro:

paginaprueba.php?campo=5

y el resultado lo imprimes en el DIV.

5) El mismo botón, pero ahora al presionarlo, llamarás al mismo evento que antes de terminar (el evento), tendrá un llamado tipo:

setTimeout("elEvento()",5000)

hacia sí mismo (al mismo evento, autollamándose cada 5000 milisegundos, es decir cada 5 segundos), y el resultado lo imprime en el DIV.

Claro, notarás que la información no está cambiando, pero ahora vas a la base de datos y cambias el campo y regresas a tu aplicación y ves que en pocos segundos, el valor cambiará y lo habrás logrado.


Como dijo Napoleón: Divide y Vencerás, =)

Y si tienes problemas, pues por aquí postea el código de lo que tienes y quien le sepa te tira un cable.

Saludos
__________________
"Di no al Internet Explorer" -Proverbio Chino-
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 13:05.