jQuery AJAX呼叫 - 是否可以取消不需要的呼叫?

问题描述:

我只是想问。我有文字输入让用户输入他们的城市。jQuery AJAX呼叫 - 是否可以取消不需要的呼叫?

jQuery有一个keyup事件链接到这个输入并在每次改变字符后发送一个AJAX调用。

但是,我发现许多不需要的AJAX调用是在人员打字时发送的,并且取决于结果的数量,这可能会降低性能。

如果有新的呼叫,是否有办法取消AJAX呼叫?有一个更好的方法吗?

一个例子可以看这里:www.datingjapan.co

+1

亚当,你在调用函数之前是否强加了最小字符限制?我认为最好的做法是不要打电话直到你想要的东西,而不是叫它50次,除掉你不想要的40次。或者对您的退货数据施加一定限度的回复? – Blake 2012-04-04 21:12:56

+0

通常你有2个控件。一个人在输入了很多字符后才开始做Ajax(3-4)。另一种是如果在半秒钟左右没有输入任何内容,则发送给ajax。否则,它会打到数据库太多,可能会减慢用户交互 – Rodolfo 2012-04-04 21:21:18

您可以使用由ajax方法返回的​​对象的abort方法(其他AJAX方法,如getpost返回jqXHR实例太):

var xhr = $.ajax(opts); 
xhr.abort(); 

请注意,jqXHR对象实际上只是XMLHttpRequest的扩展,并且XMLHttpRequest本身也有一个abort方法OD。

+0

好,所以用jquery我可以中止以前的调用。这是否意味着中止从服务器发送并且操作被取消?如果我发送了多个相同的帖子请求,他们将被全部取消,或者有办法确定要取消的帖子吗? – Adam 2012-04-04 21:35:01

+0

@Adam - “abort”从客户端发送到服务器。每个'jqXHR'对象表示一个请求。如果您调用'jqXHR'的单个实例的'abort'方法,那么这个单个请求就会被取消。 – 2012-04-04 21:39:34