All Ajax scripts use the XMLHttpRequest object, so it's useful to know the main elements of this object.
The purpose of the XMLHTTPRequest object is to allow JavaScript to formulate HTTP requests and submit them to the server. You can have your page make such calls asynchronously in the background, allowing you to continue using the page without a browser refresh or the loading of a new page.
Before you can use the XMLHttpRequest, you have to create an instance of this object, with the syntax:
var xmlHttp = new XMLHttpRequest();
-
xmlHttp can be any variable name.
XMLHTTPRequest is supported by all modern browsers, and by the main operating systems: Windows, UNIX / Linux and Mac OS, however, its implementation differs from some browsers. Microsoft introduced the XMLHTTPRequest object, implementing it in Internet Explorer 5 (till 7) as an ActiveX object.
Because you don’t know which browser, version, or operating system your users will have, your code must adapt its behavior to ensure that the instance of the object will be created successfully.
- To create the XMLHttpRequest object for all browsers, you can use the following syntax:
var request = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); // XMLHttpRequest object
- The "request" variable contains an instance of the XMLHttpRequest object.
Properties of the XMLHttpRequest object
- onreadystatechange - Determines which event handler will be called when the object’s readyState property changes
- readyState - Integer reporting the status of the request: 0 = uninitialized, 1 = loading, 2 = loaded, 3 = interactive, 4 = completed
- responseText - Data returned by the server in text string form
- responseXML - Data returned by the server expressed as a XML document object
- status - HTTP status code returned by server (200 = succes, 404 = not found, , 500 = server error, etc.)
- statusText - HTTP reason phrase returned by server ("OK", "Not found", "Internal Server Error", etc.)
Methods of the XMLHttpRequest object
- abort() - Stops the current request
- getAllResponseHeaders() - Returns all headers as a string
- getResponseHeader(x) - Returns the value of header x as a string
- open(method, URL, bool)
- method - Specifies the HTTP method (for example, GET or POST)
- URL - the target URL
- bool - whether the request should be handled asynchronously (If yes, bool=true -the default; if no, bool=false)
- send(content) - sends the request to the server. "content" indicates the information that can be sent along with data from "open()", it can be a string, array, XML DOM object or null and is usually used when data is sent via POST. If you only send data via GET and no need to use this parameter, add "null".
- setRequestHeader('x', 'y') - Sets a parameter and value pair x=y and assigns it to the header to be sent with the request
• To understand better what you can do with the XMLHttpRequest object, let's see an example.
1) Create a txt file with a simple text. For example, "test.txt" with the text "
Response from the test.txt".
2) Add the code below into an HTML file, created in the same directory where the file "test.txt" is.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
<title>Test XMLHttpRequest</title>
<script>
// sends data to an external file and return the received response
function makerequest(serverPage, tagID) {
var request = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); // XMLHttpRequest object
request.open("GET", serverPage); // define the request
request.send(null); // sends data
// Check request status
// If the response is received completely, will be transfered to the HTML tag with tagID
request.onreadystatechange = function() {
if (request.readyState == 4) {
document.getElementById(tagID).innerHTML = request.responseText;
}
}
}
</script>
</head>
<body>
<h5 style="cursor:pointer;" onclick="makerequest('test.txt', 'res')"><u><u>Click</u></u></h5>
<div id="res">Ajax course - coursesweb.net</div>
</body>
</html>
- This code is an HTML document with a JavaScript script that uses the XMLHttpRequest object. It has a <h5> tag in the BODY, used to call the JS script, and a DIV with some text in it.
- When you click on the Click word, the
onclick="makerequest('test.txt', 'res')" instruction calls the makerequest() function that will send a request to the "test.txt".
- "onreadystatechange", checks the request status. When the complete response is received (readyState == 4) will be transferred by the property "responseText", with the "getElementById()" in the HTML tag that has the id of "tagID ('res').
- This example will show the following result (click on the word "click" below):
Click
Ajax course - coursesweb.net
The request may be made to files on the server that can process data received and return a response according to that data. This technology is known as AJAX. In the following lessons you can learn more about these things.