![](/img/trans.png)
[英]Service Worker fetch handler not triggering if request is made using jQuery.ajax or XMLHttpRequest
[英]jquery ajax failed request not triggering complete or error handler
我正在像這樣進行ajax調用:
var requestData = function() {
$.ajax({
dataType: 'jsonp',
jsonp: 'js',
url: "http://someServer",
success: function (data) {
// do stuff with data
},
complete : function(data) {
// try again in 5 seconds
setTimeout(requestData, 5000);
}
});
};
一切都很好,並且可以正常工作,除了:服務器有點不穩定,而且有時它無法返回響應。 很好,但是當發生這種情況時,完整的處理程序永遠不會觸發。 我也嘗試過使用錯誤處理程序。 還有什么我可以做的嗎? 我曾考慮過使用setInterval,但我真的希望它在此之后進行下一個,而不是在可能堆積的時間進行。
更新:當服務器發生故障時,我在chrome的控制台中收到“無法加載資源”。
問題在於,JSONP的工作原理是將script
標簽插入DOM,而不是XMLHTTPRequest。 script
標簽沒有onerror
屬性,因此您無法通過常規方法測試成功與否。 唯一的方法是通過超時。
這樣的事情可能會起作用:
var requestComplete = {};
var requestData = function() {
var now = (new Date()).getTime();
requestComplete[now] = false;
$.ajax({
dataType: 'jsonp',
jsonp: 'js',
url: "http://someServer",
success: function (data) {
requestComplete[now] = true;
// do stuff with data
}
});
setTimeout(function() {
if (!requestComplete[now]) {
setTimeout(requestData, 5000); // try again in 5 seconds
}
}, 5000); // give the JSONP request 5 seconds to work
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.