
AJAX
- Send a Request To a Server
The XML Http
Request object is used to exchange data with a server.
Send a
Request To a Server
To send a
request to a server, we use the open() and send() methods of the XML Http Request
object:
xhttp.open("GET",
"ajax_info.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
xhttp.open("GET",
"demo_get.html", true);
xhttp.send();
»
In the
example above, you may get a cached result. To avoid this, add a unique ID to
the URL:
Example
xhttp.open("GET",
"demo_get.html?t=" + Math.random(), true);
xhttp.send();
»
If you want
to send information with the GET method, add the information to the URL:
Example
xhttp.open("GET",
"demo_get2.html?fname=Henry&lname=Ford", true);
xhttp.send();
POST
Requests
A simple
POST request:
Example
xhttp.open("POST",
"demo_post.html", true);
xhttp.send();
»
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
xhttp.open("POST",
"ajax_test.html", true);
xhttp.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
»
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.html", true);
The file can
be any kind of file, like .txt and .xml, or server scripting files like .html
and .php (which can perform actions on the server before sending the response
back).
Asynchronous
- True or False?
To send the
request asynchronously, the async parameter of the open() method has to be set
to true:
xhttp.open("GET",
"ajax_test.html", true);
Sending
asynchronous requests is a huge improvement for web developers. Many of the
tasks performed on the server are very time consuming. Before AJAX, this
operation could cause the application to hang or stop.
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 when the response ready
Async = true
When using
async = true, specify a function to execute when the response is ready in the
onreadystatechange event:
Example
xhttp.onreadystatechange
= function() {
if (this.readyState == 4 &&
this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.open("GET",
"ajax_info.txt", true);
xhttp.send();
»
You will
learn more about onreadystatechange in a later chapter.
Async
= false
To use async
= false, change the third parameter in the open() method to false:
xhttp.open("GET",
"ajax_info.txt", false);
Using async
= false is not recommended, but for a few small requests this can be ok.
Remember
that the JavaScript will NOT continue to execute, until the server response is
ready. If the server is busy or slow, the application will hang or stop.
Note: When
you use async = false, do NOT write an onreadystatechange function - just put
the code after the send() statement:
Example
xhttp.open("GET",
"ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML
= xhttp.responseText;
0 comments: