Estoy tratando de utilizar setTimeout para comprobar si existen datos en una tabla:usando SetTimeout con llamadas Ajax
Si los datos existe no obtener los datos. Si los datos no existen, busque los datos usando load y luego haga lo mismo cada x minutos.
Esto es lo que tengo hasta ahora. Por alguna razón, el setTimeout
no funciona cuando toca el bloque If.
Ni siquiera estoy seguro de si esta es la mejor manera de hacerlo.
var sTimeOut = setTimeout(function() {
$.ajax({
url: 'CheckIfDataExists/' +
new Date().getTime(),
success: function (response) {
if (response == 'True') {
$('.DataDiv')
.load('GetFreshData/' + new Date()
.getTime(), { "Id": $("#RowID").val() });
}
},
complete: function() {
clearTimeout(sTimeOut);
}
});
}, 10000);
Cualquier ayuda será muy apreciada.
Actualizado ...
setTimeout(function(){checkData()}, 5000);
function checkData(){
$.ajax({
url: 'CheckIfDataExists/' +
new Date().getTime(),
success: function (response) {
if (response == 'True') {
$('.DataDiv')
.load('GetFreshData/' + new Date()
.getTime(), { "Id": $("#RowID").val() });
} else {
$('.OutOfWindow').html('No Data Found');
setTimeout(function() { checkData() }, 5000);
}
},
complete: function() {
// clearTimeout(sTimeOut);
}
});
}
¿Te [comprobado su depurador] (http://blog.niftysnippets.org /2011/03/no-excuse.html) para ver cuál es incorrecto? El JS parece perfectamente bien: http://jsfiddle.net/FgT22/ – gideon
Sí. Está funcionando bien. Funciona como se esperaba cuando no hay datos en la base de datos (es decir, cuando la respuesta es verdadera). Cuando es falso, quiero volver a verificar después de x minutos. Ahí es donde parece que está el problema. No vuelve a verificar. Mi decisión de eliminar el tiempo de espera en caso de éxito es para que la próxima comprobación no se active antes de que se complete la carga anterior – mkizito76
Esto es lo que tengo ahora y parece funcionar. ¿Es esta la mejor manera de hacer esto? Por cierto, gracias por la ayuda – mkizito76