Como llamar automaticamente funciones AJAX ??

Iniciado por Diabliyo, 27 Agosto 2008, 20:15 PM

0 Miembros y 1 Visitante están viendo este tema.

Diabliyo

Hola:

Estoy realizando un sistema para vender cosas, asi que en el apartado de VENTAS tengo un formulario un poco amplio en donde se doy escojer el tipo de venta, datos del cliente y finalmente una capa GRANDE (contenedor) en donde voy poniendo los articulos/productos que va comprando el cliente. Utilizando AJAX compruebo la existencia del Cliente que desea comprar o bien en el caso que no exista pongo un formulario para que puedan registrarlo a la vez que esta comprando.

Mi idea es que en la capa GRANDE (contenedor de los productos) poderla refrescar sin necesidad de dar click, vaya, que se ejecute una funcion de AJAX cada ciertos segundos...

Como podria ejecutar una funcion de AJAX cada cierto tiempo ???...

NOTA: toda mi aplicacion esta echa con PHP y solo utilizo AJAX para listar, buscar y generar datos rapidos sin refrescar. Para esto utilizo una sola funcion de AJAX, la cual llamo cargar_datos();, mediante eventos onclick, onchnage o onsubmit

bye bye

Ertai

Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

Diabliyo

#2
Cita de: Ertai en 27 Agosto 2008, 21:17 PM
Con la función setTimeOut en javascript:

http://www.webtaller.com/construccion/lenguajes/javascript/lecciones/funciones_setinterval_settimeout_javscript.php

Saludos.

Ya he podido hacer que se reptra cada cierto tiempo que yo deseo, el problema es que no logro pasar unos valores con setInterval() :(... Mira, te explico:

La funcion que utilizo para cargar datos es:

Código (javascript) [Seleccionar]
function cargar_datos( vars, capaview, flujoddatos, varsform )
{
var conector, capa, url;

url= 'ajax.php'; //mis funciones para ajax
capa= document.getElementById(capaview);

conector= ajax();
conector.open( flujoddatos, url+'?'+vars, true );
conector.onreadystatechange= function()
{
if( conector.readyState==1 )
{
capa.innerHTML= "<center><img src='../admin/imagenes/loading.gif'><br><b>CARGANDO...</b></center>";
}
else if( conector.readyState==4 )
{
if( conector.status==200 )
{
if( varsform!=0 )
conector.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
capa.innerHTML= conector.responseText;
}
else if( conector.status==404 )
{
capa.innerHTML= "La pagina que intentas cargar no existe...";
}
else
{
capa.innerHTML= conector.status;
}
}
}
//conector.setRequestHeader( "Content-Type", "multipart/form-data" );
if( varsform!=0 )
{
var myarr= varsform.split(':'); //dividimos
var trama="";
var i=0;

for( i=0; i<(myarr.length); i++ )
{
if( i>0 )
trama += "&";
trama += myarr[i]+"="+document.getElementById(myarr[i]).value;
}

conector.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
conector.send(trama);
}
else
conector.send(null);
}


Asi que, para no modificar mas mi funcion, solo cree una funcion alterna que invoca a la funcion que acabo de mencionarte, y es:

Código (javascript) [Seleccionar]
function carga_datos_recursiva( vars, capaview, flujoddatos, varsform )
{
//alert(vars)
setInterval( "cargar_datos( vars, capaview, flujoddatos, varsform )", 2000 );
}


Y me sale el siguiente error, segun el Debuger de Firefox:

vars is not defined
http://localhost/~miuser/admin/js/script.js


Ya he invocado un alert() en la nueva funcion carga_datos_recursiva, y me imprime satisfactoriamente el contenido que debe tener vars, pero porque marca error ???... Aparte del error, pues no se muestra lo que quiero :S, me imagino que por lo mismo !!...


Ragnarok

Cuando el cliente compra un nuevo producto se producen un montón de eventos (y supongo que en javascript se pueden lanzar también, aunque eso da igual), deberías refrescar la lista no cada cierto tiempo sino cuando se produce alguno de esos eventos, es decir, cuando hay algo que refrescar.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones