Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: Diabliyo en 27 Agosto 2008, 20:15 PM

Título: Como llamar automaticamente funciones AJAX ??
Publicado por: Diabliyo en 27 Agosto 2008, 20:15 PM
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
Título: Re: Como llamar automaticamente funciones AJAX ??
Publicado por: 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.
Título: Re: Como llamar automaticamente funciones AJAX ??
Publicado por: Diabliyo en 27 Agosto 2008, 23:06 PM
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 !!...

Título: Re: Como llamar automaticamente funciones AJAX ??
Publicado por: Ragnarok en 28 Agosto 2008, 15:53 PM
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.