How to use simple API using AJAX ?

AJAX (Asynchronous JavaScript and XML) is a set of tools used to make calls to the server to fetch some data. In this article, we will see how to implement a simple API call using AJAX.

Prerequisites: Basic knowledge of AJAX and its function. You can learn all the basics from here.

What are basic building?
We will be fetching employee’s names from an employee object from a free API and displaying them inside a list. There are many API available for free on the internet. You can use any one of them.

HTML Code: We have a button and to fetch data and an empty unordered list inside which we will be adding our list-items dynamically using JavaScript.

filter_none

edit
close

play_arrow

link
brightness_4
code

<!DOCTYPE html>
<html lang="en">
  
<head>
    <!-- Required meta tags -->
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,
        initial-scale=1, shrink-to-fit=no" />
  
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href=
        integrity=
"sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
        crossorigin="anonymous" />
  
    <title>
        How to use simple API using AJAX ?
    </title>
</head>
  
<body>
    <button type="button" id="fetchBtn"
        class="btn btn-primary">
        Fetch Data
    </button>
  
    <div class="container">
        <h1>Employee List</h1>
        <ul id="list"></ul>
    </div>
  
    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js,
         then Bootstrap JS -->
    <script src="Ajax.js"></script>
    <script src=
        integrity=
"sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
        crossorigin="anonymous">
    </script>
      
    <script src=
        integrity=
"sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
        crossorigin="anonymous">
    </script>
      
    <script src=
        integrity=
"sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
        crossorigin="anonymous">
    </script>
</body>
  
</html>

chevron_right


AJAX Code:



  • Step 1: The first step is to get the button element getElementById method.
  • Step 2: The second step is to add an eventListener to the the button and providing a call-back function to it.
  • Step 3: Instantiate an XHR object using new keyword.
  • Step 4: Open an object using open function. It takes three parameters, the first one is type (GET or POST), second is the URL for the API and last one is a boolean value (true means asynchronous call and false means synchronous call).
  • Step 5: Now we will use onload function to display the data. The onload function is executed after the API call is done. We will check for the status of success. We are checking it with 200 as 200 is the success code for an HTTP request.
  • Step 6: Now, we will use parse it into a JSON object so that we can easily fetch data from it.
  • Step 7: In this step, we will use a loop to iterate over all the items in the object and adding it to the list using innerhtml property.
  • Step 8: Last step is to send the request using the send() function.
  • Below is the implementation of the above steps. We have also provided comments in each line for making the code easy to understand.

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <script>
        let fetchBtn = document.getElementById("fetchBtn");
      
      
        fetchBtn.addEventListener("click", buttonclickhandler);
      
        function buttonclickhandler() {
      
            // Instantiate an new XHR Object
            const xhr = new XMLHttpRequest();
      
            // Open an obejct (GET/POST, PATH,
            // ASYN-TRUE/FALSE)
            xhr.open("GET"
      
      
      
      
            // When response is ready
            xhr.onload = function () {
                if (this.status === 200) {
      
                    // Changing string data into JSON Object
                    obj = JSON.parse(this.responseText);
      
                    // Getting the ul element
                    let list = document.getElementById("list");
                    str = ""
                    for (key in obj.data) {
                        str += `<li>${obj.data[key].employee_name}</li>`;
                    }
                    list.innerHTML = str;
                }
                else {
                    console.log("File not found");
                }
            }
      
            // At last send the request
            xhr.send();
        }
    </script>

    chevron_right

    
    

    Complete Code: It is the combination of the above two code sections.

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <!DOCTYPE html>
    <html lang="en">
      
    <head>
      
        <!-- Required meta tags -->
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width,
                initial-scale=1, shrink-to-fit=no" />
      
        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href=
            integrity=
    "sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
            crossorigin="anonymous" />
      
        <title>
            How to use simple API using AJAX ?
        </title>
    </head>
      
    <body>
        <button type="button" id="fetchBtn"
                class="btn btn-primary">
            Fetch Data
        </button>
      
        <div class="container">
            <h1>Employee List</h1>
            <ul id="list"></ul>
        </div>
      
        <!-- Optional JavaScript -->
        <!-- jQuery first, then Popper.js,
             then Bootstrap JS -->
        <script>
            let fetchBtn = document.getElementById("fetchBtn");
      
            fetchBtn.addEventListener("click", buttonclickhandler);
      
            function buttonclickhandler() {
      
                // Instantiate an new XHR Object
                const xhr = new XMLHttpRequest();
      
                // Open an obejct (GET/POST, PATH,
                // ASYN-TRUE/FALSE)
                xhr.open("GET", 
      
      
      
      
                // When response is ready
                xhr.onload = function () {
                    if (this.status === 200) {
      
                        // Changing string data into JSON Object
                        obj = JSON.parse(this.responseText);
      
                        // Getting the ul element
                        let list = document.getElementById("list");
                        str = ""
                        for (key in obj.data) {
                            str += 
                            `<li>${obj.data[key].employee_name}</li>`;
                        }
                        list.innerHTML = str;
                    }
                    else {
                        console.log("File not found");
                    }
                }
                xhr.send();
            }
        </script>
      
            integrity=
    "sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
            crossorigin="anonymous">
        </script>
          
        <script src=
            integrity=
    "sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
            crossorigin="anonymous">
        </script>
          
        <script src=
            integrity=
    "sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
            crossorigin="anonymous">
        </script>
    </body>
      
    </html>

    chevron_right

    
    

    Output:

    full-stack-img




    My Personal Notes arrow_drop_up

    Check out this Author's contributed articles.

    If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

    Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.