Denetleyicideki bir eylem için jquery-ajax çağrım var. Bazen arama başarısız oluyor, bu yüzden tekrar tekrar denemek istiyorum.Hata durumunda jquery ajax'ı yeniden deneyin
jQuery ajax: Yukarıdaki kod
return ajax({
url: getRootDir() + urlDoTask, // urlDoTask is something like "/Action/"
data: { param: someParam },
type: 'POST',
dataType: 'json',
tryCount: 0,
retryLimit: 3
}).then(function (data) {
// Do some stuff
return ....
}, function (xhr, textStatus, errorThrown) {
if (textStatus == 'timeout' || (xhr.responseText == "" && textStatus == 'error')) {
this.tryCount++; // this is always 1
if (this.tryCount <= this.retryLimit) {
//try again
$.ajax(this);
return;
}
return; // this point is never reached
}
if (xhr.status == 404) {
// Do some stuff
}
return ... // I want to reach it after this.tryCount > this.retryLimit
});
function getRootDir() {
var loc = window.location.pathname;
var dir = loc.substring(0, loc.lastIndexOf('/'));
return dir;
}
çalışmıyor, tryCount 1 ajax çağrı başarısız her zaman her zaman. Ayrıca, bu.tryCount this.retryLimit'den büyük olduğunda, son dönüşe asla ulaşılamaz.
Fikirler?
Benim yorumumun nedenini aşağıda görebilirsiniz. Ancak, bunun yerine tüm ajax çağrısının üzerinden tekrar denemenizi öneririz. Bu şekilde, yeniden deneme kontrollerinizi yönetmek için dış durumlu bir nesneye sahip olabilirsiniz. –
Belki de http://stackoverflow.com/a/10024557/694325 adresindeki notasyonu deneyin. Bu gösterimin kapsam veya bir şeyle karışıp dağılmadığından emin değilim. Bu sorunu düzeltmeyi başardınız mı? – Nenotlep
olası bir kopyası [Başarısız bir ajax isteğini nasıl gönderebilirim?] (Http://stackoverflow.com/questions/8881614/how-do-i-resend-a-failed-ajax-request) – user2284570