0% found this document useful (0 votes)
111 views23 pages

Understanding AJAX Basics

The document provides an overview of AJAX technologies including: - AJAX allows for more interactive web applications by facilitating asynchronous communication between the browser and server without page reloads. - The XMLHttpRequest object is used to make asynchronous requests from the browser to the server and handle responses. - The Document Object Model (DOM) represents HTML and XML documents and is manipulated by JavaScript to modify pages dynamically in response to user actions or asynchronous data.

Uploaded by

dvnrkishore2722
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
111 views23 pages

Understanding AJAX Basics

The document provides an overview of AJAX technologies including: - AJAX allows for more interactive web applications by facilitating asynchronous communication between the browser and server without page reloads. - The XMLHttpRequest object is used to make asynchronous requests from the browser to the server and handle responses. - The Document Object Model (DOM) represents HTML and XML documents and is manipulated by JavaScript to modify pages dynamically in response to user actions or asynchronous data.

Uploaded by

dvnrkishore2722
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 23

AJAX

Asynchronous Javascript And XML


AJAX
• A lot of hype
– It has been around for a while
– Not complex
• Powerful approach to building websites
– Think differently
• Allows for more interactive web
applications
– Gmail, docs.google.com, Flickr, ajax13, etc.
AJAX Technologies
• HTML
– Used to build web forms and identify fields
• Javascript
– Facilitates asynchronous communication and
modification of HTML in-place
• DHTML - Dynamic HTML
– Additional markup for modifying and updating HTML
• DOM - Document Object Model
– Used via Javascript to work with both the structure
of your HTML and also XML from the server
The XMLHttpRequest
Object
• Base object for AJAX
– Used to make connections, send data, receive
data, etc.
• Allows your javascript code to talk back
and forth with the server all it wants to,
without the user really knowing what is
going on.
• Available in most browsers
– But called different things
The XMLHttpRequest Object
<script language="javascript" type="text/javascript">
var request;

function createRequest() {
try {
request = new XMLHttpRequest();
if (request.overrideMimeType) {
request.overrideMimeType('text/xml');
}
} catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
request = false;
}
}
}
if (!request)
alert("Error initializing XMLHttpRequest!");
}
</script>
Communicating
• Steps
– Gather information (possibly from HTML form)
– Set up the URL
– Open the connection
– Set a callback method
– Send the request

function getCustomerInfo()
{
var phone = document.getElementById("phone").value;
var url = "/cgi-local/lookupCustomer.php?phone=" + escape(phone);

request.open("GET", url, true);


request.onreadystatechange = updatePage;
request.send(null);
Handling Server Responses
• When the server responds, your callback
method will be invoked.
– It is called at various stages of the process
– Test readyState
function updatePage()
{
if (request.readyState == 4) {
if (request.status == 200) {
// Handle the response
} else
alert("status is " + request.status);
}
}
HTTP Ready States
• 0: The request is uninitialized
– Before calling open()
• 1: The request is set up, but hasn’t been sent
– Before calling send()
• 2: The request is sent and is being processed
– Sometimes you can get content headers now
• 3: The request is being processed
– The server hasn’t finished with its response
• 4: The response is complete
The XMLHttpRequest
Object
• Methods
– abort()
• cancel current request
– getAllResponseHeaders()
• Returns the complete set of http headers as a string
– getResponseHeader(“headername”)
• Return the value of the specified header
– open(“method”, “URL”, async, “uname”, “passwd”)
• Sets up the call
– setRequestHeader(“label”, “value”)
– send(content)
• Actually sends the request
The XMLHttpRequest
Object
• Properties
– onreadystatechange
• Event handler for an event that fires at every state change
– readyState
• Returns the state of the object
– responseText
• Returns the response as a string
– responseXML
• Returns the response as XML - use W3C DOM methods
– status
• Returns the status as a number - ie. 404 for “Not Found”
– statusText
• Returns the status as a string - ie. “Not Found”
Typical AJAX Flow
• Make the call
– Gather information (possibly from HTML form)
– Set up the URL
– Open the connection
– Set a callback method
– Send the request
• Handle the response (in callback method)
– When request.readyState == 4 and request.status == 200
– Get the response in either text or xml
• request.responseText or request.responseXML
– Process the response appropriately for viewing
– Get the objects on the page that will change
• document.getElementById or document.getElementByName, etc.
– Make the changes
AJAX Response Handler
function updatePage()
{
if (request.readyState == 4) {
if (request.status == 200) {
var response = request.responseText.split("|");
document.getElementById("order").value = response[0];
document.getElementById("address").innerHTML = response[1];
} else
alert("status is " + request.status);
}
}
The Document Object Model
• When a document is loaded in the web browser, a number of
objects are created.
– Most commonly used are window and document
• Window
– open(), close(), alert(), confirm(), prompt()
• Document
– Contains arrays which store all the components of your page
– You can access and call methods on the components using the arrays
– An object may also be accessed by its name
• document.myform.address.value = “123 Main”
• document.myform.reset()
– Can also search for element by name or id
• document.getElementById(“myelementid”)
• document.getElementsByName(“myelementname”)
W3C DOM with Javascript
• Each xml document also has a DOM
– Using Ajax you can get the returned value in xml
• XMLfile = request.responseXML
• Parse using the DOM methods from the documentElement
var rootElement = XMLfile.documentElement;
document.write("The root node of the XML file is: ");
document.writeln("<b>" + rootElement.nodeName +"</b>");

//traverse through each child of the root element


//and print out its name
for (i=0; i<rootElement.childNodes.length; i++)
{
var node = rootElement.childNodes.item(i);
document.write("The name of the node is ");
document.write("<b>" + node.nodeName + "</b>");
}
The Document Object
• Properties
– childNodes - returns a NodeList of child nodes
– documentElement - returns the root node
– documentURI - sets or returns the location of the
document
– firstChild, lastChild, nodeName, nodeType, nodeValue
• Methods
– createAttribute, createComment, createElement
– getElementById
– getElementsByTagName
• Return a NodeList of all elements with a specified name
function loadMap(filename)
// Download the data in data.xml and load it on the map. The format we expect is:
{ // <markers>
var request = GXmlHttp.create(); // <marker lat="37.441" lng="-122.141" note="marker notes"/>
// <marker lat="37.322" lng="-121.213" note="marker notes"/>
request.open("GET", filename, true); // </markers>
request.onreadystatechange = function() // <trail>
{ // <point lat="37.441" lng="-122.141"/>
// <point lat="37.322" lng="-121.213"/>
if (request.readyState == 4) // </trail>
{
var xmlDoc = request.responseXML;
var markers = xmlDoc.documentElement.getElementsByTagName("marker");

mapmarkers.length=0;
for (var i = 0; i < markers.length; i++)
{
mapmarkers.push(createMarker(new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(mark
markers[i].getAttribute("note")));
map.addOverlay(mapmarkers[i]);
}
map.setCenter(new GLatLng(parseFloat(markers[0].getAttribute("lat")), parseFloat(markers[0].getAttribute("lng

mappoints.length = 0;
var trailpoints = xmlDoc.documentElement.getElementsByTagName("point");
for (var i = 0; i < trailpoints.length; i++)
{
var tpoint = new GLatLng(parseFloat(trailpoints[i].getAttribute("lat")), parseFloat(trailpoints[i].getAttribute
mappoints.push(tpoint);
}
map.addOverlay(new GPolyline(mappoints));
}
}
request.send(null);
}
The Document Object
• Go to:
http://www.w3schools.com/dom/defa
ult.asp
AJAX Libraries
• Prototype
– http://www.prototypejs.org/
• Scriptaculous
– http://script.aculo.us/
• Jquery
– http://jquery.com/
• Mochikit
– http://mochikit.com/
Prototype Sample
new Ajax.Request('/some_url', {
method:'get',
onSuccess: function(transport)
{
var response = transport.responseText || "no response text";
alert("Success! \n\n" + response);
},
onFailure: function()
{
alert('Something went wrong...')
}
});
Prototype Example
<html>
<head>
<title>Testing Prototype</title>
<script src="http://www.prototypejs.org/assets/2008/9/29/prototype-1.6.0.3.js"></script>

<script>
function getProducts()
{
new Ajax.Updater('products', 'products.html', { method: 'get' });
}
</script>
</head>
<body>
<h2>Our fantastic products</h2>
<div id="products"><a href = "#" onClick="getProducts();">(fetch product list ...)</a></div>
</body>
</html>

You might also like