我有一个问题,我会尽力解释:
我使用以下函数(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/