How XMLHttpRequest Object Sends Request Using JavaScript

admin_img Posted By Bajarangi soft , Posted On 08-10-2020

The XMLHttpRequest object is used to exchange data with a server. so today we discuss how to send request data using java script

How XMLHttpRequest Object Sends Request Using JavaScript

AJAX - Send a Request To a Server
 

To send a request to a server, we use the open() and send() methods of the XMLHttpRequest object:

xhttp.open("GET", "demo.txt", true);
xhttp.send();

 

Method Description
open(method, url, async) Specifies the type of request

method: the type of request: GET or POST
url: the server (file) location
async: true (asynchronous) or false (synchronous)
send() Sends the request to the server (used for GET)
send(string) Sends the request to the server (used for POST)


GET or POST?

GET is simpler and faster than POST, and can be used in most cases.

However, always use POST requests when:

  • A cached file is not an option (update a file or database on the server).

  • Sending a large amount of data to the server (POST has no size limitations).

  • Sending user input (which can contain unknown characters), POST is more robust and secure than GET.


GET Requests

A simple GET request:


Example(2)

<button class="btn btn-success" type="button" onclick="loadDoc()">Change Content</button>

<script>
    function loadDoc() {
       
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    document.getElementById("demo").innerHTML = this.responseText;
                }
            };
            xhttp.open("GET", "demo_get.asp", true);
            xhttp.send();
       
    }
</script>

If you want to send information with the GET method, add the information to the URL:

Example(3)

<button type="button" onclick="loadDoc()">Request data</button>

<p id="demo"></p>
<script>
    function loadDoc() {
        var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("demo").innerHTML = this.responseText;
            }
        };
        xhttp.open("POST", "demo_post.asp", true);
        xhttp.send();
    }
</script>


POST Requests

A simple POST request:

Example(4)

<button class="btn btn-success" type="button" onclick="loadDoc1()">Change Content</button>
<script>
    function loadDoc() {
        var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("demo").innerHTML = this.responseText;
            }
        };
        xhttp.open("POST", "demo_json.asp", true);
        xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhttp.send("fname=Henry&lname=Ford");
    }
</script>

To POST data like an HTML form, add an HTTP header with setRequestHeader(). Specify the data you want to send in the send() method:

Example(5)

<button class="btn btn-success" type="button" onclick="loadDoc1()">Change Content</button>
<script>
    function loadDoc() {
        var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("demo").innerHTML = this.responseText;
            }
        };
        xhttp.open("POST", "demo_json.asp", true);
        xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhttp.send("fname=Henry&lname=Ford");
    }
</script>
 
Method Description
setRequestHeader(header, value) Adds HTTP headers to the request

header: specifies the header name
value: specifies the header value
 

The url - A File On a Server

The url parameter of the open() method, is an address to a file on a server:

xhttp.open("GET", "ajax_test.asp", true);

The file can be any kind of file, like .txt and .xml, or server scripting files like .asp and .php (which can perform actions on the server before sending the response back).



Asynchronous - True or False?

Server requests should be sent asynchronously.

The async parameter of the open() method should be set to true:

xhttp.open("GET", "ajax_test.asp", true);

By sending asynchronously, the JavaScript does not have to wait for the server response, but can instead:

  • execute other scripts while waiting for server response

  • deal with the response after the response is ready



The onreadystatechange Property

With the XMLHttpRequest object you can define a function to be executed when the request receives an answer.

The function is defined in the onreadystatechange property of the XMLHttpRequest object:

Example(6)

 

<h2 id="demo1">Let AJAX change this text.</h2>

<button class="btn btn-success" type="button" onclick="loadDoc()">Change Content</button>
<button class="btn btn-success" type="button" onclick="loadDoc1()">Change Content</button>
<script>
    function loadDoc() {
        var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("demo").innerHTML =
                    this.responseText;
            }
        };
        xhttp.open("GET", "demo_json.txt", true);
        xhttp.send();
    }
</script>
 

Synchronous Request

To execute a synchronous request, change the third parameter in the open() method to false:

xhttp.open("GET", "ajax_info.txt", false);

Sometimes async = false are used for quick testing. You will also find synchronous requests in older JavaScript code.

Since the code will wait for server completion, there is no need for an onreadystatechange function:

<p id="demo">Let AJAX change this text.</p>

<button type="button" onclick="loadDoc()">Change Content</button>

<script>
    function loadDoc() {
        var xhttp = new XMLHttpRequest();
        xhttp.open("GET", "ajax_info.txt", false);
        xhttp.send();
        document.getElementById("demo").innerHTML = xhttp.responseText;
    }
</script>
 

Complete Code For XMLHttpRequest Object Sends Request Using JavaScript

<!DOCTYPE html>
<html>
<head>
    <title>How XMLHttpRequest Object Sends Request Using JavaScript</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
</head>

<body>
<div class="container">
    <br>
    <div class="text-center">
        <h1 id="color" style="color: tomato">How XMLHttpRequest Object Sends Request Using JavaScript</h1>
    </div>
    <div class="well">
        <h2 id="demo">Let AJAX change this text.</h2>
        <h2 id="demo1">Let AJAX change this text.</h2>

        <button class="btn btn-success" type="button" onclick="loadDoc()">Change Content</button>
        <button class="btn btn-success" type="button" onclick="loadDoc1()">Change Content</button>
        <script>
            function loadDoc() {
                var xhttp = new XMLHttpRequest();
                xhttp.onreadystatechange = function() {
                    if (this.readyState == 4 && this.status == 200) {
                        document.getElementById("demo").innerHTML =
                            this.responseText;
                    }
                };
                xhttp.open("GET", "demo_json.txt", true);
                xhttp.send();
            }

            function loadDoc1() {
                var xhttp = new XMLHttpRequest();
                xhttp.open("GET", "demo_json.txt", false);
                xhttp.send();
                document.getElementById("demo1").innerHTML = xhttp.responseText;
            }
        </script>
    </div>
</div>
</body>
</html>

Related Post