【问题标题】:equivalent of jQuery.active for pure Javascript相当于纯 Javascript 的 jQuery.active
【发布时间】:2016-02-11 01:33:01
【问题描述】:

我想检查来自未使用 jQuery 的站点的活动 Ajax 请求,那么如何编写与 jQuery.active 等效的内容?

我想在访问页面后检查ajax请求是否完成。

即我找到了window.XMLHttpRequest 类,但不知道如何使用它。任何帮助表示赞赏。

【问题讨论】:

  • 检查stackoverflow.com/a/3148506/2025923。它只是在 jQuery 对象上定义的一个变量。
  • @Tushar 谢谢,但每个解决方案都使用 jQuery。
  • 这不是回答问题,而是澄清...window.XMLHttpRequest.DONE 是一系列只读常量(不是数量) 中的一个,每个都代表一个XHR 实例的可能状态 - UNSENT:0;打开:1; HEADERS_RECEIVED:2;加载:3;完成:4。不太确定这是在哪里指定的(W3C?IANA?)但它很常见(IE、Chrome、Opera),可能是通用的。
  • @Roamer-1888 以下哪个选项显示活动的 XHR:UNSENT:0;打开:1; HEADERS_RECEIVED:2;加载:3;完成:4 ?
  • 正如我所说,它们是常量。

标签: jquery ajax xmlhttprequest


【解决方案1】:

我结束了使用它。如果 window.ajax_active == 4 那么我知道 ajax 请求已经完成。到目前为止似乎对我有用。

window.ajax_active = 0;

(function(open) {
  return XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
    this.addEventListener('readystatechange', (function() {
     if (this.readyState == 1) {
        window.ajax_active += 1;
     } else if (this.readyState == 4){
        window.ajax_active -= 1;
     } 
    }), false);
    return open.call(this, method, url, async, user, pass);
  };
})(XMLHttpRequest.prototype.open);

【讨论】:

  • 不确定如何使用它,当我调用window.ajax_active 时,它会给出分配的值
  • jQuery.active 也给出了赋值。你想做什么?
  • 如果我们设置 window.ajax_active = 0; 它将返回 0 但 jQuery.active 返回活动的 ajax 请求。
  • 你能展示一个jQuery.active返回活跃的ajax请求的例子吗?
  • 好的,是的,它返回活动 ajax 请求的数量,而不是 ajax 请求本身。我现在编辑上面的答案..我没有测试它所以让我知道这是否适合你
猜你喜欢
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 2019-03-02
  • 2010-09-07
  • 2013-04-13
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多