AJAX Tutorial
AJAX Tutorial
Audience
This tutorial will be useful for web developers who want to learn how to create
interactive webpages as well as improve their speed and usability using AJAX.
Prerequisites
It is highly recommended that you are familiar with HTML and JavaScript before
attempting this tutorial.
What is AJAX?
AJAX stands for Asynchronous JavaScript and XML. AJAX is a new technique for
creating better, faster, and more interactive web applications with the help of
XML, HTML, CSS, and Java Script.
Ajax uses XHTML for content, CSS for presentation, along with Document Object
Model and JavaScript for dynamic content display.
Conventional web applications transmit information to and from the sever using
synchronous requests. It means you fill out a form, hit submit, and get directed to a
new page with new information from the server.
With AJAX, when you hit submit, JavaScript will make a request to the server,
interpret the results, and update the current screen. In the purest sense, the user
would never know that anything was even transmitted to the server.
XML is commonly used as the format for receiving server data, although any format,
including plain text, can be used.
AJAX is a web browser technology independent of web server software.
A user can continue to use the application while the client program requests
information from the server in the background.
Intuitive and natural user interaction. Clicking is not required, mouse movement is a
sufficient event trigger.
Data-driven as opposed to page-driven.
Rich Internet Application Technology
AJAX is the most viable Rich Internet Application (RIA) technology so far. It is
getting tremendous industry momentum and several tool kit and frameworks are
emerging. But at the same time, AJAX has browser incompatibility and it is
supported by JavaScript, which is hard to maintain and debug.
AJAX - Technologies
AJAX cannot work independently. It is used in combination with other
technologies to create interactive webpages.
JavaScript
Loosely typed scripting language.
DOM
API for accessing and manipulating structured documents.
CSS
Allows for a clear separation of the presentation style from the content and may be
changed programmatically by JavaScript
XMLHttpRequest
JavaScript object that performs asynchronous interaction with the server.
AJAX - Examples
Here is a list of some famous web applications that make use of AJAX.
Google Maps
A user can drag an entire map by using the mouse, rather than clicking on a
button.
https://maps.google.com/
Google Suggest
As you type, Google offers suggestions. Use the arrow keys to navigate the
results.
https://www.google.com/webhp?complete=1&hl=en
Gmail
Gmail is a webmail built on the idea that emails can be more intuitive, efficient,
and useful.
https://gmail.com/
https://maps.yahoo.com/
AJAX Example
AJAX
* =
Standard Example
Standard
* =
NOTE − We have given a more complex example in AJAX Database.
Konqueror.
When you write your next application, do consider the browsers that do not
support AJAX.
NOTE − When we say that a browser does not support AJAX, it simply means
that the browser does not support the creation of Javascript object –
XMLHttpRequest object.
<html>
<body>
<!--
function ajaxFunction() {
try {
} catch (e) {
} catch (e) {
try {
} catch (e) {
return false;
//-->
</script>
</form>
</body>
</html>
In the above JavaScript code, we try three times to make our XMLHttpRequest
object. Our first attempt −
It is for Opera 8.0+, Firefox, and Safari browsers. If it fails, we try two more
times to make the correct object for an Internet Explorer browser with −
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
If it doesn't work, then we can use a very outdated browser that doesn't support
XMLHttpRequest, which also means it doesn't support AJAX.
AJAX - Action
This chapter gives you a clear picture of the exact steps of AJAX operation.
The XMLHttpRequest object calls the callback() function and processes the result.
try {
} catch (e) {
try {
} catch (e) {
try {
} catch (e) {
return false;
function validateUserId() {
ajaxFunction();
ajaxRequest.onreadystatechange = processRequest;
if (!target) target = document.getElementById("userid");
ajaxRequest.send(null);
function validateUserId() {
ajaxFunction();
ajaxRequest.onreadystatechange = processRequest;
ajaxRequest.send(null);
Assume you enter Zara in the userid box, then in the above request, the URL is
set to "validate?id = Zara".
If we assume that you are going to write a servlet, then here is the piece of
code.
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().write("<valid>true</valid>");
} else {
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().write("<valid>false</valid>");
function processRequest() {
if (req.readyState == 4) {
if (req.status == 200) {
...
}
The HTML DOM is Updated
This is the final step and in this step, your HTML page will be updated. It
happens in the following way −
document.getElementById("userIdMessage"),
JavaScript may now be used to modify the element's attributes; modify the element's
style properties; or add, remove, or modify the child elements. Here is an example −
<!--
function setMessageUsingDOM(message) {
var messageText;
if (message == "false") {
userMessageElement.style.color = "red";
} else {
userMessageElement.style.color = "green";
if (userMessageElement.childNodes[0]) {
userMessageElement.replaceChild(messageBody, userMessageElement.childNodes[0]);
} else {
userMessageElement.appendChild(messageBody);
-->
</script>
<body>
<div id = "userIdMessage"><div>
</body>
If you have understood the above-mentioned seven steps, then you are almost
done with AJAX. In the next chapter, we will see XMLHttpRequestobject in more
detail.
AJAX - XMLHttpRequest
The XMLHttpRequest object is the key to AJAX. It has been available ever since
Internet Explorer 5.5 was released in July 2000, but was not fully discovered
until AJAX and Web 2.0 in 2005 became popular.
The data returned from XMLHttpRequest calls will often be provided by back-end
databases. Besides XML, XMLHttpRequest can be used to fetch data in other
formats, e.g. JSON or even plain text.
Listed below are some of the methods and properties that you have to get
familiar with.
XMLHttpRequest Methods
abort()
getAllResponseHeaders()
getResponseHeader( headerName )
The method parameter can have a value of "GET", "POST", or "HEAD". Other HTTP
methods such as "PUT" and "DELETE" (primarily used in REST applications) may be
possible.
send( content )
XMLHttpRequest Properties
onreadystatechange
readyState
The readyState property defines the current state of the XMLHttpRequest object.
The following table provides a list of the possible values for the readyState property
−
State Description
readyState = 0 After you have created the XMLHttpRequest object, but before
you have called the open() method.
readyState = 1 After you have called the open() method, but before you have
called send().
readyState = 4 After the request has been completed, and the response data
has been completely received from the server.
responseText
responseXML
Returns the response as XML. This property returns an XML document object, which
can be examined and parsed using the W3C DOM node tree methods and properties.
status
Returns the status as a number (e.g., 404 for "Not Found" and 200 for "OK").
statusText
NOTE − We are assuming you have sufficient privilege to perform the following
MySQL operations.
CREATE TABLE 'ajax_example' (
'name' varchar(50) NOT NULL,
'age' int(11) NOT NULL,
'sex' varchar(1) NOT NULL,
'wpm' int(11) NOT NULL,
PRIMARY KEY ('name')
)
Now dump the following data into this table using the following SQL statements
−
INSERT INTO 'ajax_example' VALUES ('Jerry', 120, 'm', 20);
INSERT INTO 'ajax_example' VALUES ('Regis', 75, 'm', 44);
INSERT INTO 'ajax_example' VALUES ('Frank', 45, 'm', 87);
INSERT INTO 'ajax_example' VALUES ('Jill', 22, 'f', 72);
INSERT INTO 'ajax_example' VALUES ('Tracy', 27, 'f', 0);
INSERT INTO 'ajax_example' VALUES ('Julie', 35, 'f', 90);
<html>
<body>
<!--
function ajaxFunction() {
try {
try {
} catch (e) {
try {
} catch (e) {
return false;
ajaxRequest.onreadystatechange = function() {
if(ajaxRequest.readyState == 4) {
ajaxDisplay.innerHTML = ajaxRequest.responseText;
// server script.
var age = document.getElementById('age').value;
ajaxRequest.send(null);
//-->
</script>
Sex:
<select id = 'sex'>
</select>
</form>
</body>
</html>
Max Age:
Max WPM:
Sex:
Your result will display here in this section after you have made your entry.
<?php
$dbhost = "localhost";
$dbuser = "dbusername";
$dbpass = "dbpassword";
$dbname = "dbname";
//Select Database
mysql_select_db($dbname) or die(mysql_error());
$age = $_GET['age'];
$sex = $_GET['sex'];
$wpm = $_GET['wpm'];
// Escape User Input to help prevent SQL Injection
$age = mysql_real_escape_string($age);
$sex = mysql_real_escape_string($sex);
$wpm = mysql_real_escape_string($wpm);
//build query
if(is_numeric($age))
if(is_numeric($wpm))
//Execute query
$display_string = "<table>";
$display_string .= "<tr>";
$display_string .= "<th>Name</th>";
$display_string .= "<th>Age</th>";
$display_string .= "<th>Sex</th>";
$display_string .= "<th>WPM</th>";
$display_string .= "</tr>";
while($row = mysql_fetch_array($qry_result)) {
$display_string .= "<tr>";
$display_string .= "<td>$row[name]</td>";
$display_string .= "<td>$row[age]</td>";
$display_string .= "<td>$row[sex]</td>";
$display_string .= "<td>$row[wpm]</td>";
$display_string .= "</tr>";
$display_string .= "</table>";
echo $display_string;
?>
Now try by entering a valid value (e.g., 120) in Max Age or any other box and
then click Query MySQL button.
Max Age:
Max WPM:
Sex:
Your result will display here in this section after you have made your entry.
If you have successfully completed this lesson, then you know how to use
MySQL, PHP, HTML, and Javascript in tandem to write AJAX applications.
AJAX - Security
AJAX-based Web applications are subject to the same security threats as regular Web
applications.
AJAX Security: Client Side
JavaScript code is visible to a user/hacker. Hacker can use JavaScript code for
inferring server-side weaknesses.
JavaScript code is downloaded from the server and executed ("eval") at the client and
can compromise the client by mal-intended code.
Downloaded JavaScript code is constrained by the sand-box security model and can
be relaxed for signed JavaScript.
AJAX is growing very fast and that is the reason that it contains many issues
with it. We hope with the passes of time, they will be resolved and AJAX will
become ideal for web applications. We are listing down a few issues that AJAX
currently suffers from.
Complexity is increased
Server-side developers will need to understand that presentation logic will be required
in the HTML client pages as well as in the server-side logic.