AJAX = Asynchronous JavaScript And XML.
AJAX is not a programming language.
AJAX just uses a combination of:
XMLHttpRequest
object (to request data from a web server)AJAX is a misleading name. AJAX applications might use XML to transport data, but it is equally common to transport data as plain text or JSON text.
AJAX allows web pages to be updated asynchronously by exchanging data with a web server behind the scenes. This means that it is possible to update parts of a web page, without reloading the whole page.
All modern browsers support the XMLHttpRequest
object.
The XMLHttpRequest
object can be used to exchange data with a web server behind the scenes. This means that it is possible to update parts of a web page, without reloading the whole page.
All modern browsers (Chrome, Firefox, IE, Edge, Safari, Opera) have a built-in XMLHttpRequest
object.
Syntax for creating an XMLHttpRequest
object:
A callback function is a function passed as a parameter to another function.
In this case, the callback function should contain the code to execute when the response is ready.
To send a request to a server, you can use the open() and send() methods of the XMLHttpRequest
object:
For security reasons, modern browsers do not allow access across domains.
This means that both the web page and the XML file it tries to load, must be located on the same server.
The examples on W3Schools all open XML files located on the W3Schools domain.
If you want to use the example above on one of your own web pages, the XML files you load must be located on your own server.
Method | Description |
---|---|
new XMLHttpRequest() | Creates a new XMLHttpRequest object |
abort() | Cancels the current request |
getAllResponseHeaders() | Returns header information |
getResponseHeader() | Returns specific header information |
open(method, url, async, user, psw) |
Specifies the request method: the request type GET or POST url: the file location async: true (asynchronous) or false (synchronous) user: optional user name psw: optional password |
send() |
Sends the request to the server Used for GET requests |
send(string) |
Sends the request to the server. Used for POST requests |
setRequestHeader() | Adds a label/value pair to the header to be sent |
Property | Description |
---|---|
onload | Defines a function to be called when the request is recieved (loaded) |
onreadystatechange | Defines a function to be called when the readyState property changes |
readyState |
Holds the status of the XMLHttpRequest. 0: request not initialized 1: server connection established 2: request received 3: processing request 4: request finished and response is ready |
responseText | Returns the response data as a string |
responseXML | Returns the response data as XML data |
status |
Returns the status-number of a request 200: "OK" 403: "Forbidden" 404: "Not Found" For a complete list go to the Http Messages Reference |
statusText | Returns the status-text (e.g. "OK" or "Not Found") |
With the XMLHttpRequest
object you can define a callback function to be executed when the request receives an answer.
The function is defined in the onload
property of the XMLHttpRequest
object:
If you have more than one AJAX task in a website, you should create one function for executing the XMLHttpRequest
object, and one callback function for each AJAX task.
The function call should contain the URL and what function to call when the response is ready.
The readyState
property holds the status of the XMLHttpRequest.
The onreadystatechange
property defines a callback function to be executed when the readyState changes.
The status
property and the statusText
properties hold the status of the XMLHttpRequest object.
Property | Description |
---|---|
onreadystatechange | Defines a function to be called when the readyState property changes |
readyState |
Holds the status of the XMLHttpRequest. 0: request not initialized 1: server connection established 2: request received 3: processing request 4: request finished and response is ready |
status |
200: "OK" 403: "Forbidden" 404: "Page not found" For a complete list go to the Http Messages Reference |
statusText | Returns the status-text (e.g. "OK" or "Not Found") |
The onreadystatechange
function is called every time the readyState changes.
When readyState
is 4 and status is 200, the response is ready:
The XMLHttpRequest object is used to request data from a server.
To send a request to a server, we use the open() and send() methods of the XMLHttpRequest
object:
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) |
The url parameter of the open()
method, is an address to a file on a server:
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).
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:
The default value for the async parameter is async = true.
You can safely remove the third parameter from your code.
Synchronous XMLHttpRequest (async = false) is not recommended because the JavaScript will stop executing until the server response is ready. If the server is busy or slow, the application will hang or stop.
GET
is simpler and faster than POST
, and can be used in most cases.
However, always use POST requests when:
A simple GET
request:
If you want to send information with the GET
method, add the information to the URL:
How to delete a newline if it is the last character in a file?
How to pass command-line arguments to a Perl program?
How to efficiently calculate a running standard deviation
Howto use a variable in the replacement side of the Perl substitution operator?
How to summ quickly all numbers in a file?
How to remove duplicate items from an array in Perl?
How to differ of Two Arrays Using Perl