繁体   English   中英

停止运行ajax调用

[英]stop running ajax calls

我在jquery中用php动态搜索。 当我输入字母时,Ajax呼叫开始。 我的问题是,所有ajax调用都可以正常工作直到结束,因此每个字母都是完整的调用。 当用户输入完整的单词时,我有未使用的请求。 如何停止未使用的电话?

非常感谢你

使用超时将请求延迟几毫秒,并在按下新键时将其清除。

就像是

var searchtimeout;
$('#search').keyup( function(){
  if (searchtimeout)
      {
        clearTimeout(searchtimeout);
      }
  searchtimeout = setTimeout(function(){
                                // initiate the ajax call here..
                             }, 300);
} );

使用按钮来处理用户完成操作后必须单击的请求,或者使用诸如反跳之类的方法

一种方法是,当用户按下回车键时发送请求,或者至少等待几秒钟(1-3)来查看用户是否停止键入然后发出请求,而不必这样做在输入框中搜索所有更改。

好的,这是我的解决方案:

if (searchtimeout)
        {
            clearTimeout(searchtimeout);
        }
        searchtimeout = setTimeout(function(){
            if(x){
                x.abort();
                alert("MACH WEG!");
            }
            x = $.post(url + "ajax.html?nsearch=1&ckey="+SID, {queryString: ""+inputString+""}, function(data) { // Do an AJAX call
                $('#suggestions').fadeIn(); // Show the suggestions box
                $('#suggestions').html(data); // Fill the suggestions box
                x = null;
            });
        }, 300);

您为什么不在jquery中使用自动完成插件。我假设您已经对动态查询进行了手动编码。自动完成会处理大部分此类操作,并且还可以配置要发送多少个字母到服务器上。 .it还实现了缓存。

我已经在许多asp.net项目中使用了它,它非常简洁。.docs.jquery.com/Plugins/autocomplete

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM