ruby-on-rails - 即使所有先前的请求都中止,jQuery AJAX 请求仍很慢

标签 ruby-on-rails ajax jquery

我有一个搜索过滤器,它会在更改过滤器时触发 ajax 请求来更新结果集。用户经常会一次性更改许多过滤器,从而引发许多 AJAX 请求。

因此,我决定在发出新请求时中止先前的请求(通过使用 ajax.abort() 函数)。现在... Firebug 将所有这些请求显示为已中止,但最后一个请求(唯一未中止的请求)花费的时间越长,前面中止的请求就越多。

例如,如果我只更改一个过滤器,则加载请求将需要 1 秒。但是,如果我一次性更改 5 个过滤器,它会中止其中 4 个,只留下最后一个请求。但是,此请求最终需要 5 秒才能完成。

有谁知道这是为什么吗?我猜即使 jQuery 中止了请求,我的服务器仍然会处理它? (我正在开发模式下运行本地 Rails Mongrel,仅供引用)这有点违背了我中止请求的全部原因......我能做些什么来解决这个问题?

非常感谢您的帮助!

最佳答案

如果用户的搜索参数输入速度很快,您可能需要尝试延迟请求的方法。例如,在我的一个应用程序中,我会等到用户停止半秒。

  $("#user_login").keypress(function() {
    var login = this;
    if (this.value != this.lastValue) {
      $("#loading_small").addClass("loading-small");
      if (this.timer) { clearTimeout(this.timer); }
      this.timer = setTimeout(function() { 
        $.get("/users/login_validate", $(login).serialize(), function(data) {
          $("#loading_small").removeClass("loading-small");
          $("#login_valid").fadeIn().html(data);
        });
      }, 500);
    }
  });

关于ruby-on-rails - 即使所有先前的请求都中止,jQuery AJAX 请求仍很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3485725/

相关文章:

ruby-on-rails - rails : how to eager load limited records of ordered association without N+1 queries

css - Greybox Overlay 改变窗口大小

jQuery 使用 .next() 函数查找紧邻字符 "@"的字符

jquery - 需要带有 Node 和 jQuery 的 JS

javascript - Rails4 - 对项目 Controller 的 AJAX 请求

ruby-on-rails - Activerecord has_many :through through multiple models

ruby-on-rails - Rails_admin : browsing collections of unknown structure

javascript - 如何在django中提交表单而不刷新?

ruby-on-rails - 如何在 Ruby on Rails 中测试聊天应用程序?

javascript - Ajax .load 刷新/后退按钮