Ver Mensaje Individual
  #23 (permalink)  
Antiguo 13/09/2011, 10:57
refreegrata
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 16 años, 6 meses
Puntos: 27
Respuesta: porque no me cambia los datos de mi funcion

El archivo recuperar.php de ninguna manera podrá quedar esperando más parámetros para devolver una respuesta pausada. Recibe parámetros, procesa, devuelve la respuesta y termina su ejecución. Si lo llamas otra vez se ejecutará todo de nuevo, por esto deberás dar parámetros adicionales (por GET o POST) de forma que no siempre devuelva la misma respuesta.

Sin consideraciones de velocidad, comprobación de la conexión, parámetros incorrectos u otros factores, podrías hacer algo como:
Código:
function objetoAjax()   {
...
}
 

var dato, offset, procesamiento = null;

function limpiar(){
	try { window.clearInterval(procesamiento); }catch(e) {}
	offset = 0;
	procesamiento = null;
	dato = null;
}

function pedir_auxiliar() {
	var Ajax = objetoAjax();
	Ajax.open("get","recuperar.php?codigo=" + dato + '&offset='+offset, true);
	Ajax.onreadystatechange = function() {
		if (Ajax.readyState == 4 && (Ajax.status == 200 || Ajax.status == 501)){
        		var retorno  = eval(Ajax.responseText);
			if(retorno == null) limpiar();
			else	MostrarRegistros(retorno);
		}
	}
	Ajax.send(null);
	offset +=2;
}

function pedir(seleccion) {
	limpiar();
        dato = seleccion;
	procesamiento = window.setInterval(pedir_auxiliar,4000);
}

function MostrarRegistros(numero){
    ...}
Es decir, declarar variables globales e iniciar un nuevo intervalo cada vez que se llama a pedir.
También deberás pasar un parámetro adicional a recuperar.php (en este caso offset) para que este sepa en que parte del ciclo vas.

Por último deberás definir una bandera a retornar por recuperar.php (en este caso null) para así saber en funcion.js cuando detener el intervalo.

En recuperar.php, obviamente, deberás filtrar la consulta con LIMIT y OFFSET (según el parámetro nuevo).