javascript - jquery ajax 上的双重调用

标签 javascript jquery

我有一个问题,我会尽力解释:

我使用以下函数(ajax jQuery)

$.ajax({
        type: "POST",
        url: "index.php?controller=Group&action=getInfoAjax",
        data: "parameter="+parameter,
        dataType: "json",
        success: function(message)
        { .....

有时(我不知道如何重现)ajax调用会执行两次,在firebug上可以看到以下内容:

  • 第一个还在思考,第二个似乎已经完成了。
  • 两者都包含“响应”选项卡上的答案。
  • 成功函数永远不会被调用。

我认为这是因为用户点击了两次,但我已经放置了一些代码来避免这种情况。在我的上一次测试中,我看到第一个测试是如何思考的,而第二个测试“毫无理由”地开始了。

提前非常感谢

最佳答案

如果不查看完整的 html/js,可能很难提出修复建议。但以下可能是一个很好的解决方法。 Ben Alman 的 Debounce 和 Throttle 插件在这种情况下会更安全。

http://benalman.com/projects/jquery-throttle-debounce-plugin/

在你的情况下,去抖可能就足够了。您可能需要尝试 10-200 毫秒的延迟。在特殊情况下,您会看到进行了两次 ajax 调用,debounce 将进行一次调用。

例如,我在所有要在“文本”框 keyup 事件上触发的 ajax 调用中使用 debounce。 debounce,一种对多个快速触发的连续调用进行排队的方式。当连续调用停止至少“延迟”时间时,debounce 会进行一次调用。

关于javascript - jquery ajax 上的双重调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4618339/

相关文章:

javascript - 如何将匿名函数初始化为变量并稍后使用它?

javascript - Onchange 之后,Javascript 中发生单击功能

javascript - Knockout - 设置 json 生成的列表中仅一项可见

javascript - 通过javascript函数显示隐藏部分

javascript - 使用 jQuery 构建 HTML 表格

javascript - 使用 jQuery 更改正文 html

javascript - Select2 输入框中的 Select2 预加载标签

javascript - jQuery:用于博客的具有核心 jQuery 或 jQuery UI 的纯 HTML/CSS?

javascript - jQuery token 输入 : [Error] TypeError: undefined is not an object (evaluating 'term.replace' )

javascript - jQuery Intellisense 使用 $ 以外的东西