Si estamos programando una aplicación en AJAX en la que por ejemplo guardamos o actualizamos los datos de un formulario y pretendemos actualizar una lista de registros asociados, es posible que a veces no se muestren los cambios.

Esto puede ocurrir porque cuando recargamos el listado, el servidor de bases de datos aún no ha actualizado estos valores. Para ello podemos hacer uso de un timer para recargar el listado pasado por ejemplo un segundo.

Aquí teneis una muestra de código que implementa lo comentado:

var limit_timer_forms_ajax; // Declaramos estas dos variables como globales.
var parselimit_timer_forms_ajax;

function inicializa_timer_forms_ajax(){
//ingresa el tiempo en formato “minutos:segundos” El rango de minutos debe ser de 0 a infinito. El rango de segundos debe ser de 0 a 59
limit_timer_forms_ajax=’00:01′;
parselimit_timer_forms_ajax=limit_timer_forms_ajax.split(“:”);
parselimit_timer_forms_ajax=parselimit_timer_forms_ajax[0]*60+parselimit_timer_forms_ajax[1]*1;
}

function timer_forms_ajax(codigo_ejecucion){
// Vamos a establecer un tiempo de retardo para la ejecución de código restante de javascript
// cuando hagamos alguna operacion contra la base de datos para dar tiempo a que se actualicen los cambios.

if (parselimit_timer_forms_ajax==1){
eval(codigo_ejecucion);
}else{
parselimit_timer_forms_ajax-=1;
curmin=Math.floor(parselimit_timer_forms_ajax/60);
cursec=parselimit_timer_forms_ajax%60;
setTimeout(“timer_forms_ajax()”,1000);
}
}

function delete_only_file(url,id,modulo){
// Esta función la llamaremos al hacer click en un botón de la página. Recibirá la variable url que contendrá la dirección de una página en este caso
// de php que se encargará de eliminar un fichero del servidor.

var url_actualizacion_lista = RUTA_ABSOLUTA+’privado.php/’+modulo+’/actualiza_lista_archivos?id=’ + id;

// Aquí se hace una llamada por AJAX a la url recibida, y al completarse la petición se inicializará el timer y pasado el tiempo de 1 segundo se actualizará
// el formulario, en este caso de uploads de archivos.
new Ajax.Request(url,{
method: ‘get’,
parameters: ”,
onSuccess: function(respuesta){

inicializa_timer_forms_ajax();
timer_forms_ajax(‘actualiza_form_upload(”+id+’',”+modulo+’');actualiza_lista_after_action(”+url_actualizacion_lista+’');document.getElementById(’btn_submit1’).disabled=’disabled’;');

}
});

}



Dejar un comentario