jQuery AJAX调用 - 是否可能取消不需要的调用?

4

我只是想问一下。我有一个文本输入框,允许用户输入他们的城市。

jQuery将keyup事件与此输入框链接,并在每次字符更改后发送一个AJAX调用。

然而,我发现在人们输入时会发送许多不必要的AJAX调用,这取决于结果的数量,这可能会降低性能。

是否有一种方法可以在进行新的调用时取消AJAX调用?是否有更好的方法来处理这个问题?

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


1
Adam,在调用函数之前,你是否设置了最小字符限制?我认为最佳实践是在需要时才调用它,而不是调用50次并筛选出你不想要的40个。或者对返回数据设置响应限制? - Blake
通常你会有两个控件。一个是只有在输入了3-4个字符后才开始执行ajax的控件。另一个是如果半秒钟到一秒钟内没有输入任何内容,则发送到ajax。否则它会频繁地访问数据库,可能会减慢用户交互。 - Rodolfo
1个回答

3
您可以使用由ajax方法返回的jqXHR对象的abort方法(像getpost这样的其他AJAX方法也会返回一个jqXHR实例):
var xhr = $.ajax(opts);
xhr.abort();

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

好的,使用jQuery我可以中止之前的调用。这是否意味着会向服务器发送一个中止请求并取消操作?如果我发送多个相同的POST请求,它们都会被取消吗?还是有一种方法可以识别要取消的请求? - Adam
@Adam - “abort” 是由客户端发送到服务器的。每个“jqXHR”对象代表一个单独的请求。如果您调用单个“jqXHR”实例的“abort”方法,则取消该单个请求。 - James Allardice

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接