XMLHttpRequest: readystatechange event

Baseline
Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Note: This feature is available in Web Workers, except for Service Workers.

The readystatechange event is fired whenever the readyState property of the XMLHttpRequest changes.

Warning: This should not be used with synchronous requests and must not be used from native code.

Syntax

Use the event name in addEventListener():

js
addEventListener("readystatechange", (event) => { })

Alternatively, assign to the event handler property of the interface:

js
onreadystatechange = (event) => { }

Event type

A generic Event with no added properties.

Examples

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

xhr.open(method, url, true);
xhr.onreadystatechange = () => {
  // In local files, status is 0 upon success in Mozilla Firefox
  if (xhr.readyState === XMLHttpRequest.DONE) {
    const status = xhr.status;
    if (status === 0 || (status >= 200 && status < 400)) {
      // The request has been completed successfully
      console.log(xhr.responseText);
    } else {
      // Oh no! There has been an error with the request!
    }
  }
};
xhr.send();

Specifications

Specification
XMLHttpRequest
# event-xhr-readystatechange
XMLHttpRequest
# handler-xhr-onreadystatechange

Browser compatibility