AJAX - XMLHttpRequest
The XMLHttpRequest object is used to request data from a server.
Send a Request To a Server
To send a request to a server, we use the open() and send() methods of the
|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 - A File On a Server
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).
Asynchronous - True or False?
Server requests should be sent asynchronously.
The async parameter of the open() method should be set to true:
- execute other scripts while waiting for server response
- deal with the response after the response is ready
The default value for the async parameter is async = true.
You can safely remove the third parameter from your code.
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.
In the example above, you may get a cached result. To avoid this, add a unique ID to the URL:
If you want to send information with the
GET method, add the information to the URL:
How the server uses the input and how the server responds to a request, is explained in a later chapter.
To POST data like an HTML form, add an HTTP header with
Specify the data you want to send in the
|setRequestHeader(header, value)||Adds HTTP headers to the request
header: specifies the header name
value: specifies the header value
To execute a synchronous request, change the third parameter in the
open() method to
Since the code will wait for server completion, there is no need for an
document.getElementById("demo").innerHTML = xhttp.responseText;
Modern developer tools are encouraged to warn about using synchronous requests and may throw an InvalidAccessError exception when it occurs.