您可以使用xhr
的abort()
方法。試試這個:
var currentXhr;
$('#postinput').on('keyup',function(){
currentXhr && currentXhr.readyState != 4 && currentXhr.abort(); // clear previous request
var txt = $(this).val();
var currentXhr = $.ajax({
type: "POST",
url: "action.php",
data: 'txt=' + txt,
cache: false,
context:this,
success: function(html) {
alert(html);
}
});
});
如果你不想使用全局變量,你可以在xhr
存儲在#postinput
元素的data-*
屬性。
另一種方法是隻火AJAX請求時,用戶已經停止打字:
var timer;
$('#postinput').on('keyup',function(){
clearTimeout(timer);
var txt = $(this).val();
var timer = setTimeout(function() {
$.ajax({
type: "POST",
url: "action.php",
data: 'txt=' + txt,
cache: false,
context:this,
success: function(html) {
alert(html);
}
});
}, 100); // sends request 100ms after typing stops.
});
你爲什麼不開始只有一個請求最後一次擊鍵之後?的 – Andreas
可能重複的[中止使用jQuery Ajax請求(http://stackoverflow.com/questions/446594/abort-ajax-requests-using-jquery) – 2013-10-28 12:04:51
@Andreas我使用加載圖像顯示處理。 'setTimeout'給我加載圖像顯示隱藏的問題。 – Ace