我有一个脚本
$('#postinput').on('keyup',function(){
var txt=$(this).val();
$.ajax({
type: "POST",
url: "action.php",
data: 'txt='+txt,
cache: false,
context:this,
success: function(html)
{
alert(html);
}
});
});
假设有人输入a,ajax运行。他马上输入了b c等等。 Ajax每次运行。有没有办法在新的时候停止先前的请求?
答案 0 :(得分:1)
您可以使用abort()
的{{1}}方法。试试这个:
xhr
如果您不想使用全局变量,可以将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
元素的data-*
属性中。
另一种方法是仅在用户停止输入时触发AJAX请求:
#postinput
答案 1 :(得分:0)
您可以使用Jquery -
执行此操作jaxRequests = new Array();
queueRequest = function(whatever, you, want) {
if(ajaxRequests[ajaxRequests.length - 1]) {
ajaxRequests[ajaxRequests.length - 1].abort();
}
ajaxRequests[ajaxRequests.length] = //Insert New jQuery AJAX call here.
}