Ajax

AJAX: AJAX stands for Asynchronous Javascript and XML processing. AJAX is not programming language but it is one of the programming concept.

Def: AJAX is the art of exchanging data with a server and update parts of a web page without reloading whole page.
1.      AJAX applications are browser-platform independent
2.      AJAX can be used for creating rich, web-based applications that look and works like a desktop application.
3.      With AJAX we can create better, faster, and more user-friendly web applications.
4.      AJAX will work based on Javascript and HTTP requests.
5.      AJAX is a type of programming mode which was populared in the year 2005 by Google(With Google suggest)
AJAX is the use of non standard XMLHTTPRequst object to communicate with server side scripts. It can send as well as receive information in variety of formats includeing XML. HTML, and even text files. AJAX’s most appealing characterstics, however, it its “asynchronous” nature, which means that it can do all of this without having to refresh the page. This allows us to update protions a page based upon server events.
What is AJAX: AJAX is a set of technologies, supported by a web browser, including these elements
HTML and CSS for presenting.
Javascipt for local processing data inside the page or to access  elements of XML file read on the server(with the getElementByTagName method for example)
Optionally….
The DOM parser class may used
JSP or another scripting language may be used
XML and XSTL to process the data if returned in XML form.
SOAP may be used to dialog with the server.
Asynchronous: Asynchronous means getting the response of the server without reloading current web page.
Synchronous: Synchronous means getting response of the server each and every time after reloading the web page.

Why to use AJAX: It is used mainly to build a fast, dynamic website, but also resources. For improving sharing of resources, it is better to use the power of all client computers sharing of resources. It is better to use the power of all the client computers rather than just unique server network. AJAX allows performing processing on client computer (in JavaScipt) with data taken from the server.
  The processing of web page formerly was only server-side, using services or PHP scipts, before the whole page was sent within the network. But AJAX can selectively modify a part of a page displayed by the browser, and update it without the need to reload the whole document with all images, menus etc..

For example, fields of forms, choices of user, may be processed and the result displayed immediately into the same page.
How does AJAX work: AJAX uses a programming model with display and events. These events are user actions they call functions associated to elements of the web page.
      Interactively it is achieved with form and buttons. DOM allows linking elements page with actions and also extracting data from XML files provided by the server.
The keystone of AJAX is the XMLHttpRequest
XMLHttpRequest:
All modern browsers support the XMLHttpRequest object(IE5 and IE6 uses an ActiveX object)
The XMLHttpRequest object is used to exchange data with a server behind the scenes. This means that it is possible to update parts of web pae, without reloading whole page.
How to create an XMLHttpRequest Object:
All modern browsers(IE7+, Firefox, Chrome, safari and opera) have a built-in XmlRequest object.
Syntax for HttpRequest Object:
Variable=new XMLHttpRequest();
Syntax for ActiveXObject(IE5 and IE6) use an ActiveXObject
Variable=new ActiveXObject(“Mirosoft.XMLHTTP”);
To work with AJAX, XMLHttpRequest object(AJAX engine) provides us four methods and six properties.
The two methods provided by XMLHttpRequest objects are
1. Open(“GET/POST(Any http method),url,true/false)
2. send() or send(String)
3. setRequestHeader(header_name,header_value)
4. overrideMIMEType(“text/html”)  (supported by only firefox)
Method
Description
Open(http_method,url,async)
Specifies the type of reuqst, the URL, and if the request should be handled asynchronously or not.
Method: the type of request: GET or POST or any other http method
url: the location of the file on the server
async: true(asynchronous) or false (synchronous)
Send
Send request  to the server.
Send(String)
Only used for POSt methods
setRequestHeader(header,value)
Add HTTP headers to the request.
Header: specifies the header name
Value: specifies the header value

GET: GET is simplifier and faster than post, and can be used in most cases.
POST: 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.
EX: A simple GET method is shown below
xmlhttp.opn(“GET”,”demo_get.jsp”,true);
xmlhttp.send();

If we want ot send information with theGET method, add the information to the URL

xmlhttp.open(“GET”,”demo_get2.jsp?fname=sachin&lname=Tendulkar”true)
xmlhttp.send();

AJAX has given six properties. Those are listed below.
1.      Onreadystatechange
2.      readyState
3.      status
4.      responseText
5.      responwXML
6.      StatusText:

Onreadystatechange: This property holds or contains the name of the Javascipt function to be called whenever response from the server is received by the AJAX engine. While working with AJAX, we need to take the support of minimum of two Javascript functions
One for sending the request to the server and another for receiving response from the server.

EX:
function f1()
{
var x=new ActiveXObject(“Microsoft.XMLHTTP”);
x.onreadystatechange=fun2;
---------------    
x.open(-,-)
x.send();

ReadyState:
This property holds the status of the request.
This value of this property will be dynamically changed.
Ready state property values are varied from 0 to 4.
     0: request not initialized: AJAX engine is created, but open(-,-) is not called.
     1: server connection established: Means that open(-,-,-) is called
     2: Request received: means that send() is called
     3: Processing request: Means that request is under processing.
     4: Request finished and response is ready: Means that response for the request is generated  by the server.
3. Status: Status attributes holds different status codes to know the status of the response returned by the server.
100-109: represents info
200-299: represents success response
300-399: represents redirection
400-499: represents incomplete web resource
500-599: represents server error
4. ResponseText: This property holds the response data returned by the server for the given req
    request
5. ResponseXML: This property holds the response generated by the server for the given
     requests.
6. StatusText: StatusText is generated text message of response text.
Procedure to develop AJAX code to interact with the web resourece program of web application:
1. Make web page generate javascript call based request.
EX: Enter country: <input type=”text” name=”t1” onKeyup=”f1()”/>
When the key of keyboard is pressed and released to type a letter in the text.
Here “onKeyup” even is raised and it calls the javascript function “f1()”
Step2: Keep AJAX engine ready in the JavaScript function definition.
Function f1()
{
If(window.XMLHttpRequest)  //object of the current window
{
Var areng=new XMLHttpRequest() //code for IE+7, Firefox, Chrome, Opera
}
else if(window.ActiveXObject) //ActiveX version
{
Var aeng=new ActriveXObject(“Mircosoft.XMLHTTP”)  //code for IE6,7
}
------   
----------    
}
3. Specify the name fo the call back function to AJAX engine.
aeng.onreadystatechange=connection;
The dunction that specified “connection” Javascript function will be called automatically by Ajax engine for each change that takes place in readyState. Property values like 0-1,1-2,1-3,1-4
readyState property value is “4”
4. Process the request of the url having query string.
//read from data
var String=document.f1.t1.value;
//frame request url
var url=”test.jsp?q=”+strng;
5. Makes AJAX engine send request to targe web resource program asynchronously
Aseng.open(“GET”,url,truye)
6. Develop targe web resource program like servlet or jsp
7. Define callback function definition(java script function) having logic to update webpage content when AJAX engine’s “responseState” is “4” and http response “status” code is “200”.
EX:
Function connection()
{
If(aeng.readyState==4||aeng.readyState==”complete”)
{
-----------------   
-------------------  
}

}
Flow of AJAX engine:








AJAX web architecture



Disadvantages of AJAX:
  • The back and refresh button are rendered useless
    With AJAX, as all functions are loaded on a dynamic page without the page being reloaded or more importantly a URL being changed (except for a hash symbol maybe), clicking the back or refresh button would take you to an entirely different web page or to the beginning of what your dynamic web page was processing. This is the main drawback behind AJAX but fortunately with good programming skills this issue can be fixed.
  • Back functionality cannot work because the dynamic pages don’t register themselves to the browsers history engine. Hence the need of Iframe becomes essential.
  • The page cannot be bookmarked if implemented using Ajax.
  • If java script is disabled , Ajax will not work
  • Because different components of the pages are loaded at different times, response time may be slow.
  • Because different components of the pages are loaded at different times it may create confusion for the user. 


For example programs please refer AJAX\NetBeansProjects
Advantages of AJAX:
a) Allows feedback, confirmation and errors messages to be displayed on same page/view.
b) Wider variety of controls e.g. sliders, date pickers, windows, tabs, spinners etc.
c) No installation, just an AJAX enabled browser required
d) Higher immunity to viruses and piracy.
e) Reduced load on server resources as processing is distributes over server and client
f) Lowered application development and deployment costs
g) Reduction in network traffic due to more intelligent client and selective data request



Leave a Reply