Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jQuery AJAX调用-是否可以取消不需要的调用?_Php_Jquery - Fatal编程技术网

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

Php jQuery AJAX调用-是否可以取消不需要的调用?,php,jquery,Php,Jquery,我只是想问问。我有文本输入,允许用户键入他们的城市 jQuery有一个链接到此输入的keyup事件,并在每次字符更改后发送一个AJAX调用 但是,我发现在用户键入时会发送许多不需要的AJAX调用,这可能会降低性能,具体取决于结果的数量 如果进行了新的调用,是否有方法取消AJAX调用?有更好的方法吗 这里可以看到一个示例:您可以使用该方法返回的对象的abort方法(其他AJAX方法,如get和post也返回jqXHR实例): 请注意,jqXHR对象实际上只是XMLHttpRequest的扩展,而X

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

jQuery有一个链接到此输入的
keyup
事件,并在每次字符更改后发送一个AJAX调用

但是,我发现在用户键入时会发送许多不需要的AJAX调用,这可能会降低性能,具体取决于结果的数量

如果进行了新的调用,是否有方法取消AJAX调用?有更好的方法吗


这里可以看到一个示例:

您可以使用该方法返回的对象的
abort
方法(其他AJAX方法,如
get
post
也返回
jqXHR
实例):


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

Adam,在调用函数之前,您是否施加了最小字符限制?我认为最好的做法是在你想打电话之前不要打电话,而不是打50次电话,然后剔除你不想要的40次。或者对您的返回数据施加响应限制?通常您有两个控件。输入这么多字符后才开始使用ajax(3-4)。另一种方法是,如果在半秒钟左右没有输入任何内容,则发送到ajax。否则,它会对数据库造成太多的影响,并可能减慢用户交互OK,因此使用jquery我可以中止以前的调用。这是否意味着从发送到服务器的中止操作被取消?如果我发送了多个相同的post请求,它们是否都会被取消,或者是否有办法确定要取消的一个?@Adam-将
中止
从客户端发送到服务器。每个
jqXHR
对象表示一个请求。如果调用
jqXHR
的单个实例的
abort
方法,则该单个请求将被取消。
var xhr = $.ajax(opts);
xhr.abort();