我知道这个问题在很多方面都有问题,我也能够让它发挥作用。它只能与键*事件结合使用...
为什么.abort()
不能使用此功能?
function setGlobalSearch(){
var xhr;
$('#globalSearch').keyup(function(){
if(xhr && xhr.readystate != 4){
xhr.abort();
}
var searchVal = $(this).val();
xhr = $.ajax({
type: "GET",
url: "/ajax.actions?i=globalSearch&q="+searchVal,
success: function(data) {
$('#globalSearchResults').html(data);
},
dataType:"html",
cache:false
});
});
}
答案 0 :(得分:2)
abort()
功能仅在请求已发送时才会触发。我只能建议情况可能并非如此。
但是,我建议使用一种不同的模式来消除中止请求的必要性,正如您所见,这种模式偶尔会有点不稳定。相反,我只会在键入停止一段时间后触发请求。试试这个:
var timer;
$('#globalSearch').keyup(function() {
clearTimeout(timer);
timer = setTimeout(function() {
var searchVal = $(this).val();
$.ajax({
type: "GET",
url: "/ajax.actions?i=globalSearch&q="+searchVal,
success: function(data) {
$('#globalSearchResults').html(data);
},
dataType:"html",
cache:false
});
}, 150); // fire the AJAX request 150ms after typing stops.
});