使用jQuery停止未完成的Ajax请求

Pun*_*ore 4 jquery ruby-on-rails

我正在我的网站(rails)上实现实时搜索功能.每次有按键时,我都会提交表格.但是,如果用户键入多个字符,则会向服务器发送多个搜索请求.我想知道是否有办法停止以前(未处理)的请求.我只想成功处理最后一个请求.

我知道有一个abort()方法可以中止ajax请求,但我不再能控制前一个请求,所以我无法调用abort.也许我在这里做错了什么.

任何人?

谢谢

PUNIT

Chr*_*nte 5

没有办法使用jQuery停止Ajax请求.处理此类事情的更好方法是"去抖动"事件:http://benalman.com/code/projects/jquery-dotimeout/examples/debouncing/(尝试第一个示例).这样,每次按键都不会触发事件; 就在用户暂停一段时间的时候.否则,你最终会收到很多请求.

但是有一种方法:

var lastRequest;
$("input").keypress(function(){
    if (lastRequest){
        lastRequest.abort();
        lastRequest = null;
    }
    lastRequest = $.ajax({type: "POST", url: "some.php", data: "your=data&goes=here"});
});
Run Code Online (Sandbox Code Playgroud)

From:使用jQuery中止Ajax请求

Bootnote: " lastRequest"听起来很邪恶.