--- title: XMLHttpRequest.onreadystatechange slug: Web/API/XMLHttpRequest/onreadystatechange tags: - XHR - XMLHttpRequest - 参考 - 处理程序 - 属性 - 接口 translation_of: Web/API/XMLHttpRequest/onreadystatechange ---
{{APIRef}}

只要 readyState 属性发生变化,就会调用相应的处理函数这个回调函数会被用户线程所调用。XMLHttpRequest.onreadystatechange 会在 {{domxref("XMLHttpRequest")}} 的{{domxref("XMLHttpRequest.readyState", "readyState")}} 属性发生改变时触发 {{event("readystatechange")}} 事件的时候被调用。

警告:这个方法不该用于同步的requests对象,并且不能在内部(C++)代码中使用.

当一个 XMLHttpRequest 请求被 abort() 方法取消时,其对应的 readystatechange 事件不会被触发。

UPDATE: 在下面的浏览器版本中会触发 (Firefox 51.0.1, Opera 43.0.2442.991, Safari 10.0.3 (12602.4.8), Chrome 54.0.2840.71, Edge, IE11). 例子在 here - 重新加载几次页面即可。

语法

XMLHttpRequest.onreadystatechange = callback;

取值

示例

var xhr= new XMLHttpRequest(),
    method = "GET",
    url = "https://developer.mozilla.org/";

xhr.open(method, url, true);
xhr.onreadystatechange = function () {
  if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
    console.log(xhr.responseText)
  }
}
xhr.send();

规范

规范 状态 注释
{{SpecName('XMLHttpRequest', '#handler-xhr-onreadystatechange')}} {{Spec2('XMLHttpRequest')}} WHATWG living standard

浏览器兼容性

{{CompatibilityTable}}

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support {{CompatChrome(1)}} {{CompatGeckoDesktop(1.0)}} {{CompatIe(7)}}[1] {{CompatVersionUnknown}} {{CompatSafari(1.2)}}
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support {{CompatUnknown}} 1.0 {{CompatVersionUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}

[1] IE 5 和 6可以通过使用 ActiveXObject() 支持ajax。