jQuery AJAX呼叫 - 是否可以取消不需要的呼叫?
我只是想问。我有文字输入让用户输入他们的城市。jQuery AJAX呼叫 - 是否可以取消不需要的呼叫?
jQuery有一个keyup
事件链接到这个输入并在每次改变字符后发送一个AJAX调用。
但是,我发现许多不需要的AJAX调用是在人员打字时发送的,并且取决于结果的数量,这可能会降低性能。
如果有新的呼叫,是否有办法取消AJAX呼叫?有一个更好的方法吗?
一个例子可以看这里:www.datingjapan.co
您可以使用由ajax
方法返回的对象的abort
方法(其他AJAX方法,如get
和post
返回jqXHR
实例太):
var xhr = $.ajax(opts);
xhr.abort();
请注意,jqXHR
对象实际上只是XMLHttpRequest
的扩展,并且XMLHttpRequest
本身也有一个abort
方法OD。
好,所以用jquery我可以中止以前的调用。这是否意味着中止从服务器发送并且操作被取消?如果我发送了多个相同的帖子请求,他们将被全部取消,或者有办法确定要取消的帖子吗? – Adam 2012-04-04 21:35:01
@Adam - “abort”从客户端发送到服务器。每个'jqXHR'对象表示一个请求。如果您调用'jqXHR'的单个实例的'abort'方法,那么这个单个请求就会被取消。 – 2012-04-04 21:39:34
亚当,你在调用函数之前是否强加了最小字符限制?我认为最好的做法是不要打电话直到你想要的东西,而不是叫它50次,除掉你不想要的40次。或者对您的退货数据施加一定限度的回复? – Blake 2012-04-04 21:12:56
通常你有2个控件。一个人在输入了很多字符后才开始做Ajax(3-4)。另一种是如果在半秒钟左右没有输入任何内容,则发送给ajax。否则,它会打到数据库太多,可能会减慢用户交互 – Rodolfo 2012-04-04 21:21:18