2013-10-21 82 views
0

有簡單的jQuery ajax調用:jQuery的AJAX中止導致錯誤0

var ajaxOb; 
var callAjax = function(){ 
if (ajaxOb){ 
    ajaxOb .abort(); 
} 
ajaxOb = $.ajax({..}); 
} 

功能callAjax被添加到輸入文本字段的onPress事件。 它工作正常,除非當我快速輸入東西我得到了Ajax錯誤(0)

如何防止這種情況?

+1

那麼,什麼是你的問題,你的問題?你想要達到什麼目的? – devnull69

回答

3

可能是因爲您射擊太多同步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); 
3

也許它只是經常發射!

你可以用setTimeout的嘗試:

var ajaxOb; 
var timeout; 
var callAjax = function(){ 
if (ajaxOb){ 
    ajaxOb .abort(); 
} 
clearTimeout(timeout); 
timeout = setTimeout(function(){ 
    ajaxOb = $.ajax({..}); 
}, 100); 

} 
相關問題