How do you handle errors in XMLHttpRequest in JavaScript?

XMLHttpRequest is an important tool for making asynchronous requests to servers in JavaScript.

However, these requests can sometimes fail due to errors such as network issues or server problems. Handling these errors properly is crucial for building robust applications that provide a good user experience.

Handling Errors in XMLHttpRequest

When an XMLHttpRequest fails, it typically triggers an error event on the object. To handle this error event, we can register a listener function that will be called when the event occurs.

Here is an example of how to do this:

var xhr = new XMLHttpRequest();

xhr.addEventListener("error", function () {
  console.log("An error occurred while sending the request.");
});

xhr.open("GET", "https://example.com/api/data");
xhr.send();

In this example, we create a new XMLHttpRequest object and register a listener function for the error event using the addEventListener method. This function simply logs a message to the console when an error occurs.

We then open a GET request to the URL https://example.com/api/data and send the request using the send method.

If an error occurs during the request, the listener function will be called, and the error message will be logged to the console.

Handling Network Errors

One of the most common types of errors that can occur with XMLHttpRequest is a network error. This can happen if the user’s internet connection is lost, the server is down, or there is a problem with the user’s network configuration.

To handle network errors in XMLHttpRequest, we can use the onerror event. This event is triggered when the request encounters a network error, and we can use it to display an error message to the user.

Here is an example:

var xhr = new XMLHttpRequest();

xhr.onerror = function () {
  alert("A network error occurred while sending the request.");
};

xhr.open("GET", "https://example.com/api/data");
xhr.send();

In this example, we create a new XMLHttpRequest object and set the onerror property to a function that displays an error message using the alert method.

We then open a GET request to the URL https://example.com/api/data and send the request using the send method.

If a network error occurs during the request, the onerror function will be called, and an alert message will be displayed to the user.

Handling HTTP Errors

Another common type of error that can occur with XMLHttpRequest is an HTTP error. This can happen if the server returns an error status code, such as 404 Not Found or 500 Internal Server Error.

To handle HTTP errors in XMLHttpRequest, we can use the onreadystatechange event.

This event is triggered whenever the readyState property of the XMLHttpRequest object changes, and we can use it to check the status code of the response and display an error message to the user if necessary.

Here is an example:

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function () {
  if (xhr.readyState === 4 && xhr.status !== 200) {
    alert("An HTTP error occurred: " + xhr.status);
  }
};

xhr.open("GET", "https://example.com/api/data");
xhr.send();

In this example, we create a new XMLHttpRequest object and set the onreadystatechange property to a function that checks the readyState and status properties of the object.

If the readyState is 4 (which means that the request is complete) and the status is not 200 (which means that the server returned an error status code), the function displays an error message using the alert method.

We then open a GET request to the URL https://example.com/api/data and send the request using the send method.

If an HTTP error occurs during the request, the onreadystatechange function will be called, and an alert message will be displayed to the user with the status code of the error.

Handling Timeout Errors

Timeout errors can occur if the server takes too long to respond to a request. This can happen if the server is busy or if the request is too complex to process quickly.

To handle timeout errors in XMLHttpRequest, we can use the ontimeout event. This event is triggered when the request exceeds a specified timeout period, and we can use it to display an error message to the user.

Here is an example:

var xhr = new XMLHttpRequest();

xhr.ontimeout = function () {
  alert("The request timed out.");
};

xhr.open("GET", "https://example.com/api/data");
xhr.timeout = 5000; // Set a timeout of 5 seconds
xhr.send();

In this example, we create a new XMLHttpRequest object and set the ontimeout property to a function that displays an error message using the alert method.

We then open a GET request to the URL https://example.com/api/data and set a timeout of 5 seconds using the timeout property.

If the request exceeds the specified timeout period, the ontimeout function will be called, and an alert message will be displayed to the user.

Combining Error Handlers

var xhr = new XMLHttpRequest();

xhr.onerror = function () {
  alert("An error occurred while sending the request.");
};

xhr.ontimeout = function () {
  alert("The request timed out.");
};

xhr.onreadystatechange = function () {
  if (xhr.readyState === 4 && xhr.status !== 200) {
    alert("An HTTP error occurred: " + xhr.status);
  }
};

xhr.open("GET", "https://example.com/api/data");
xhr.timeout = 5000; // Set a timeout of 5 seconds
xhr.send();

In this example, we create a new XMLHttpRequest object and set the onerror, ontimeout, and onreadystatechange properties to functions that handle the various types of errors that can occur.

We then open a GET request to the URL https://example.com/api/data, set a timeout of 5 seconds using the timeout property, and send the request using the send method.

If any type of error occurs during the request, the appropriate function will be called, and an error message will be displayed to the user.

Thank you for reading, and let’s have conversation with each other

Thank you for reading my article. Let’s have conversation on Twitter and LinkedIn by connecting.

Read more: