【问题标题】:Frequent onkeyup event function calls, causes extremely slow response from AJAX频繁调用 onkeyup 事件函数,导致 AJAX 响应极慢
【发布时间】:2012-12-21 00:45:21
【问题描述】:

我正在使用 AJAX 通过使用“LIKE”查询来查询数据库来生成搜索建议。用户在输入字段中键入文本时会返回结果。

我的设置方式如下:

JQuery:

      var timer;
        $(".prod-name-input").keyup(function(){
            var self = this;
            clearTimeout(timer);
            searchword = self.value;
            timer = setTimeout(function(){
                $(".smart-suggestions").load('invoice-get-data.php?searchword=' + self.value);
            },300); //onkeyup event works with a 300 millisecond delay
        });

问题是,如果我输入一个包含 6 个字符的单词,则至少需要几秒钟才能填充完整单词的 AJAX 结果,此时似乎有多次调用 AJAX 函数用户在文本字段中输入了一个单词(由于 onkeyup 事件)。我在 mySQL 查询上使用了 var_dump 来尝试查看发生了什么,它表明一旦查询了完整的搜索词,这通常太慢了,并且使用我的方法需要几秒钟,结果就会返回几乎是瞬间,

我的目标是通过避免我现在的极端滞后,让搜索建议几乎立即出现,因此只要用户在输入字段中键入一些文本,搜索建议就会出现。我试图仔细控制 ajax 调用的数量以提高响应时间,但没有任何成功。几天来我一直在尝试解决这个问题,并希望得到任何帮助。非常感谢。

【问题讨论】:

  • 请查看question。这可能会有所帮助。
  • 您需要中止之前的 Ajax 调用。如果你真的想要性能,你必须避免数据库查找。
  • 也试试看question
  • 感谢您的回复。抱歉,我是 JQuery/Ajax 的新手,当我尝试中止我的 AJAX 时,我收到一个错误,我无法中止这种对象。如果有请求正在处理,有人可以告诉我如何在上面的代码中应用中止吗?
  • 你能把你的代码贴在你中止旧请求的地方吗?

标签: javascript jquery ajax


【解决方案1】:

我的解决方案是为 mysql 查询设置一个 LIMIT,因为我不需要 100 个查询结果,但只需要少数,这导致 AJAX 显着提高了速度。

【讨论】:

    猜你喜欢
    • 2016-01-23
    • 1970-01-01
    • 2017-08-09
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    相关资源
    最近更新 更多