有簡單的jQuery ajax調用:jQuery的AJAX中止導致錯誤0
var ajaxOb;
var callAjax = function(){
if (ajaxOb){
ajaxOb .abort();
}
ajaxOb = $.ajax({..});
}
功能callAjax被添加到輸入文本字段的onPress事件。 它工作正常,除非當我快速輸入東西我得到了Ajax錯誤(0)
如何防止這種情況?
有簡單的jQuery ajax調用:jQuery的AJAX中止導致錯誤0
var ajaxOb;
var callAjax = function(){
if (ajaxOb){
ajaxOb .abort();
}
ajaxOb = $.ajax({..});
}
功能callAjax被添加到輸入文本字段的onPress事件。 它工作正常,除非當我快速輸入東西我得到了Ajax錯誤(0)
如何防止這種情況?
可能是因爲您射擊太多同步XHR請求。大多數瀏覽器將它們限制在合理範圍內。一個可能的解決方案是而不是在每次按鍵時觸發事件,但包含一個計時器,該計時器確保偶數每指定時間最多觸發一次。您可以使用此的小插件我做了前一段時間爲:
(function ($) {
$.fn.delayEvent = function (event, callback, ms) {
var timer = 0;
$(this).on(event, function() {
clearTimeout (timer);
timer = setTimeout(callback, ms);
});
return $(this);
};
})(jQuery);
用法:
$("#someTextInput").delayEvent("keyup", function() {
console.log("I will fire a maximum of once every 500ms");
}, 500);
也許它只是經常發射!
你可以用setTimeout的嘗試:
var ajaxOb;
var timeout;
var callAjax = function(){
if (ajaxOb){
ajaxOb .abort();
}
clearTimeout(timeout);
timeout = setTimeout(function(){
ajaxOb = $.ajax({..});
}, 100);
}
那麼,什麼是你的問題,你的問題?你想要達到什麼目的? – devnull69