在用户在搜索框中键入/追加下一个字母之后,需要中止ajax请求运行的所有以前的搜索查询。
我使用了以下代码来执行所需的结果。声明了一个对象jqxhr以中止ajax请求:
var jqxhr = {abort: function () {}}
然后在用户键入新内容时调用ajax时,初始化如下对象:
jqxhr = $.ajax({
type: "GET",
url: "ContentAjax.php",
cache: false,
dataType: 'json',
.........OHER CODE HERE.........
现在的问题是,如果用户键入新的字母并更改最新的搜索请求,ajax请求将被中止。但是php仍然在执行,所以唤醒mysql是没有用的,严重减慢了网站的运行速度,我知道我们不能在这里用javascript终止php操作。
所以我试着像这样延迟ajax请求:
jqxhr = setTimeout(function(){ $.ajax({...code..}) }, 3000);
或者
setTimeout(function(){ jqxhr = $.ajax({...code..}) }, 3000);
但这些都不管用。它显示了一个错误,说明未定义jqxhr.abort()。或者php操作仍然没有停止。
请帮我解决这个问题,谢谢。
1条答案
按热度按时间yqlxgs2m1#
如果要设置ajax超时