DEV Community

Cover image for How To Use XMLHttpRequest In Javascript
Udemezue John
Udemezue John

Posted on

How To Use XMLHttpRequest In Javascript

Introduction.

If you've ever built a web app or worked on a website that loads data without refreshing the page, you’ve probably come across something called XMLHttpRequest (XHR).

It’s a simple yet powerful tool in JavaScript that lets you send and receive data asynchronously from a server. Sounds cool, right?

It’s essentially the backbone of dynamic websites—think about how you interact with things like Google Maps or Facebook, where the page doesn’t reload every time you do something. XMLHttpRequest helps with all of that!

In this guide, I’m going to walk you through how to use XMLHttpRequest in JavaScript.

Let’s jump into it!

What is XMLHttpRequest?

At its core, XMLHttpRequest is a built-in JavaScript object that allows you to send HTTP requests to a web server and receive responses, all without needing to refresh the entire page.

It was initially created for use with XML data, but over time, it’s been used to handle various data formats like JSON and HTML.

If you think about a typical web page, whenever you want to update the content—whether it’s pulling in new blog posts, refreshing a user’s notifications, or getting data from a server—you would usually have to reload the page.

But with XMLHttpRequest, you can send requests to the server and get back data while keeping the user on the same page. This allows for smoother and faster user experiences.

Why Is XMLHttpRequest Important?

You might be asking, “Why bother using XMLHttpRequest when I’ve got other options?” Well, here’s why it’s still relevant:

  • Asynchronous Requests: XMLHttpRequest doesn’t make the page reload when you ask for data. This is crucial for modern web apps, as users want instant results.
  • Legacy Support: Even though newer technologies like the Fetch API are available, XMLHttpRequest is still widely used and well-supported across all browsers.
  • Powerful for Dynamic Content: If you need to load or send data dynamically, XHR is your go-to tool. It can pull data from a server and update parts of a page without a full reload.
  • Cross-Browser Compatibility: XMLHttpRequest works across all major browsers, so you don’t have to worry about it not working on older browsers.

How Does XMLHttpRequest Work?

Let’s break down how this process works. XMLHttpRequest follows a basic workflow:

  • Create the XMLHttpRequest Object: The first step is to create an instance of the XMLHttpRequest object in your JavaScript code.
  • Open the Request: After that, you’ll set up the type of HTTP request you want to make (like GET, POST, etc.) and specify the URL to send the request to.
  • Send the Request: Then, you send the request off to the server.
  • Handle the Response: Once the server responds, you can process the response and update the webpage as needed.

How Do I Use XMLHttpRequest?

Let’s dive into a simple example that shows you how to use XMLHttpRequest to fetch data from a server.

Create the XMLHttpRequest Object:

var xhr = new XMLHttpRequest();

Enter fullscreen mode Exit fullscreen mode

Open the Request: Here, we're using a GET request to fetch data from a public API. We’ll fetch some JSON data from a mock server.

xhr.open('GET', 'https://jsonplaceholder.typicode.com/posts', true);
Enter fullscreen mode Exit fullscreen mode

Send the Request: Now, we send the request to the server.

xhr.send();
Enter fullscreen mode Exit fullscreen mode

Handle the Response: To process the data returned by the server, we’ll need to add an event listener to check when the response is complete. Once it’s ready, we can parse the JSON data and display it on the page.

xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        var data = JSON.parse(xhr.responseText);
        console.log(data);
    }
};

Enter fullscreen mode Exit fullscreen mode

A More Detailed Example.

Let’s say you want to fetch a user’s data from a server and display it on the page without reloading. Here’s how you might do that:

Create the XMLHttpRequest Object:

var xhr = new XMLHttpRequest();

Enter fullscreen mode Exit fullscreen mode

Open the Request: We’re making a GET request to fetch a specific user’s data.

xhr.open('GET', 'https://jsonplaceholder.typicode.com/users/1', true);

Enter fullscreen mode Exit fullscreen mode

Send the Request: Send the request off to the server.

xhr.send();
Enter fullscreen mode Exit fullscreen mode

**Handle the Response: **When the data is returned, parse it and update the page with the user’s details.

xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        var user = JSON.parse(xhr.responseText);
        document.getElementById('user').innerHTML = `
            <h2>${user.name}</h2>
            <p>Email: ${user.email}</p>
            <p>Phone: ${user.phone}</p>
        `;
    }
};
Enter fullscreen mode Exit fullscreen mode

In this example, when the page loads, it will display the user’s information without refreshing.

Handling Errors.

When working with XMLHttpRequest, it’s important to handle potential errors, such as network issues or server problems.

You can check the status property of the response to see if the request was successful.

Here’s how you can handle errors:

xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
        if (xhr.status == 200) {
            var data = JSON.parse(xhr.responseText);
            console.log(data);
        } else {
            console.log('Error: ' + xhr.status); // Handle the error
        }
    }
};
Enter fullscreen mode Exit fullscreen mode

XMLHttpRequest vs Fetch API

You might have heard of the Fetch API as a modern alternative to XMLHttpRequest.

It’s a more powerful, flexible, and simpler way to make HTTP requests. Fetch uses Promises, which makes it easier to work with asynchronous code.

Here’s a quick comparison:

XMLHttpRequest is older, and its syntax can be more complex, especially when handling multiple steps.

Fetch offers a more streamlined and modern approach, but not all browsers support it fully, especially older ones.

If you’re working with modern projects, Fetch is usually the better choice. But if you need to support older browsers, XMLHttpRequest is still a solid option.

FAQs

Q1: Is XMLHttpRequest still relevant?

Yes! While newer methods like Fetch are available, XMLHttpRequest is still widely used in many applications, especially for backward compatibility with older browsers.

Q2: Can I use XMLHttpRequest with other data types besides JSON?

Absolutely! While XML was originally the main data format, you can use XMLHttpRequest with JSON, HTML, plain text, and more.

Q3: How do I know if the request was successful?

You can check the readyState and status properties to ensure the request was completed and successful (status 200).

Q4: Is XMLHttpRequest difficult to use?

Not at all! Once you understand the basic workflow (create, open, send, and handle the response), it becomes pretty easy to work with.

Conclusion.

XMLHttpRequest is a powerful tool for working with server data asynchronously in JavaScript.

If you're already familiar with it or have tried using Fetch, what would be your next step?

Are you excited to explore how you can integrate XMLHttpRequest into your projects?

Top comments (0)