Ajax Quick Guide
Ajax Quick Guide
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.
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.
AJAX - TECHNOLOGIES
AJAX cannot work independently. It is used in combination with other technologies to create
interactive webpages.
JavaScript
Loosely typed scripting language.
JavaScript function is called when an event occurs in a page.
Glue for the whole AJAX operation.
DOM
API for accessing and manipulating structured documents.
Represents the structure of XML and HTML 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.
http://maps.google.com/
Google Suggest
As you type, Google will offer suggestions. Use the arrow keys to navigate the results.
http://www.google.com/webhp?complete=1&hl=en
Gmail
Gmail is a webmail, built on the idea that email can be more intuitive, efficient and useful.
http://gmail.com/
http://maps.yahoo.com/
AJAX Example:
* =
Standard Example:
* =
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 creation of Javascript object XMLHttpRequest object.
<html>
<body>
<script language="javascript" type="text/javascript">
<!--
//Browser Support Code
function ajaxFunction(){
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
}catch (e){
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:
Most likely though, our variable ajaxRequest will now be set to whatever XMLHttpRequest standard
the browser uses and we can start sending data to the server. The step-wise AJAX workflow is
explained in the next chapter.
AJAX - ACTION
This chapter gives you a clear picture of the exact steps of AJAX operation.
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e){
function validateUserId() {
ajaxFunction();
function validateUserId() {
ajaxFunction();
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.
function processRequest() {
if (req.readyState == 4) {
if (req.status == 200) {
var message = ...;
...
}
document.getElementById("userIdMessage"),
// where "userIdMessage" is the ID attribute
// of an element appearing in the HTML document
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:
<script type="text/javascript">
<!--
function setMessageUsingDOM(message) {
var userMessageElement = document.getElementById("userIdMessage");
var messageText;
if (message == "false") {
userMessageElement.style.color = "red";
messageText = "Invalid User Id";
}
else
{
userMessageElement.style.color = "green";
messageText = "Valid User Id";
}
var messageBody = document.createTextNode(messageText);
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.
XMLHttpRequest XHR is an API that can be used by JavaScript, JScript, VBScript, and other web
browser scripting languages to transfer and manipulate XML data to and from a webserver using
HTTP, establishing an independent connection channel between a webpage's Client-Side and
Server-Side.
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.
You already have seen a couple of examples on how to create an XMLHttpRequest object.
Listed below is listed 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.
The "async" parameter specifies whether the request should be handled asynchronously or
not. "true" means that the script processing carries on after the send method without waiting
for a response, and "false" means that the script waits for a response before continuing script
processing.
send content
XMLHttpRequest Properties
onreadystatechange
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 = 3 After the browser has established a communication with the server, but
before the server has completed the response.
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
<html>
<body>
<script language="javascript" type="text/javascript">
<!--
//Browser Support Code
function ajaxFunction(){
var ajaxRequest; // The variable that makes Ajax possible!
try{
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e){
if(ajaxRequest.readyState == 4){
var ajaxDisplay = document.getElementById('ajaxDiv');
ajaxDisplay.innerHTML = ajaxRequest.responseText;
}
}
NOTE: The way of passing variables in the Query is according to HTTP standard and have formA.
URL?variable1=value1;&variable2=value2;
Max Age:
Max WPM:
Sex: m
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());
//build query
$query = "SELECT * FROM ajax_example WHERE sex = '$sex'";
if(is_numeric($age))
$query .= " AND age <= $age";
if(is_numeric($wpm))
$query .= " AND wpm <= $wpm";
//Execute query
$qry_result = mysql_query($query) or die(mysql_error());
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: m
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 Security: Server Side
AJAX-based Web applications use the same server-side security schemes of regular Web
applications.
You specify authentication, authorization, and data protection requirements in your web.xml
file declarative or in your program programmatic.
AJAX-based Web applications are subject to the same security threats as regular Web
applications.
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 - ISSUES
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.