24
WebOSS ‘07 S Pradeep Building Applications using AJAX

Building Applications Using Ajax

Embed Size (px)

DESCRIPTION

The first of its kind Web Technology Conference on Open Source Technology, WebOSS '07 was organised in Kolkata on Sat, 13th Oct 07 and I spoke at the event as one of the participants on "Building Applications using AJAX". Here I will share my presentation.

Citation preview

Page 1: Building Applications Using Ajax

WebOSS ‘07S Pradeep

Building

Applications

using AJAX

Page 2: Building Applications Using Ajax

What is AJAX?

� AJAX = Asynchronous JavaScript And XML

� Is a web development technique used for creating faster, interactive web applications.

Page 3: Building Applications Using Ajax

Who uses AJAX?

� Google maps

� Gmail

� Google Suggest

� Flickr

� del.icio.us

� Meebo

� and many more…

Page 4: Building Applications Using Ajax

How AJAX is different

Page 5: Building Applications Using Ajax

Need for AJAX

� To increase web's interactivity, speed and usability

� Issues with classic web applications

* Almost all processing is done on server

* High latency

* Low interactivity

Page 6: Building Applications Using Ajax

Benefits of Using AJAX

� Enhance your sites by allowing quicker access to data.

� Reduce the amount of bandwidth used in data presentation.

� Make a web application that feels more like a native application.

Page 7: Building Applications Using Ajax

AJAX Workarounds

� Hidden IFRAME

� <SCRIPT> src hack

� Cookies

Page 8: Building Applications Using Ajax

Where to use AJAX

� Anywhere you have a search box, adding Google suggest functionality.

� Pages where you have a multi-step process.

� When working with large or highly interdependent datasets.

Page 9: Building Applications Using Ajax

Simple Ajax Application : How To

� Create a request object

� Make the request

� Handle the response

Page 10: Building Applications Using Ajax

Create a request object

if browser is mozilla or safari or opera then

create a new XMLHttpRequest

otherwise if browser is IE

create a new ActiveXObject

otherwise

error - browser does not support XMLHttpRequest

� IE 5,5.5,6 implement XHR as an ActiveX object (Msxml2.XMLHTTP/Microsoft.XMLHTTP)

� Mozilla 1.0+, Safari 1.2+, Opera 8+, IE7 provide XMLHttpRequest natively.

� All XHR objects have the same methods and properties.

Page 11: Building Applications Using Ajax

Code

var xhr = null;

if(window.XMLHttpRequest) // Mozilla,Safari, etc.

{

xhr = new XMLHttpRequest();

}

else if(window.ActiveXObject) // < IE 7

{

xhr = new ActiveXObject('Microsoft.XMLHTTP');

}

Else

{

alert('Oops! Your browser does not support XMLHttpRequest');

}

Page 12: Building Applications Using Ajax

XHR Methods

� open(‘method’,’url’,asyncFlag)

� send(content)

� abort()

� getResponseHeader(“header”)

� setRequestHeader(“header”,”value”)

Page 13: Building Applications Using Ajax

XHR properties

� onreadystatechange

� readystate

� responseText

� responseXML

� status

� statusText

Page 14: Building Applications Using Ajax

Make the request

� set onreadystatechange to callback function cbProcessResponse

� open a request on the XHR object

� send the request through the XHR object

� “Same Site” rule

� “GET” or “POST”

� Asynchronous flag

Page 15: Building Applications Using Ajax

Codexhr.onreadystatechange=cbProcessResponse;

xhr.open(’GET’,‘ajax.php’,true);

function cbProcessResponse()

{

if(xhr.readystate==4 && xhr.status==200)

{

alert(xhr.responseText);

}

}

/* readystate values

0 -> uninitialized

1 -> loading

2 -> loaded

3 -> interactive

4 -> completed

*/

Page 16: Building Applications Using Ajax

Handle Response: Parsing the XML

// Our sample XML

<?xml version="1.0" encoding="ISO-8859-1"?>

<root>

<response>OK</response>

<msg>Hello World!</msg>

</root>

// Revised callback function

function cbProcessResponse()

{

if(xhr.readystate==4 && xhr.status==200)

{

var xmlDoc = xhr.responseXML.documentElement;

var s = x.getElementsByTagName('response')[0].firstChild.data;

var m = x.getElementsByTagName('msg')[0].firstChild.data;

alert(‘Response Code:’+s+’\nMessage: ‘+m)

}

}

Page 17: Building Applications Using Ajax

Enter JSON

� JavaScript Object Notation

� JSON is a lightweight data-interchange format.

� JSON data are slightly simpler and slightly more in line with the rest of the JavaScript language than scripts for XML data.

� Find more about JSON at http://json.org

//sample JSON

{

response: ‘OK’,

msg: ‘Hello World’

}

Page 18: Building Applications Using Ajax

JSON How?

� JSON can be generated by all the popular server-side languages.� Native/Library Support

// Revised callback function to use JSON

function cbProcessResponse()

{

if(xhr.readystate==4 && xhr.status==200)

{

var jsonData = eval(‘(‘+xhr.responseText+’)’);

var s = jsonData.response; // easy ;-)

var m = jsonData.msg;

alert(‘Response Code:’+s+’\nMessage: ‘+m)

}

}

� Doesn’t that look simpler?

Page 19: Building Applications Using Ajax

Frameworks

� A framework is a re-usable design for a software system with built-in generic functions for performing repetitive, natively unsupported operations.

� The Prototype JavaScript Framework is a JavaScript framework that provides an Ajax framework and other utilities.

� Download from http://prototypejs.org

� Others: YUI, Dojo, jQuery, mooTools

Page 20: Building Applications Using Ajax

Using Prototype.js

� Prototype provides the Ajax object to abstract the different browsers.

� Ajax.Request() � Ajax.Updater(container, url[, options])

var pars = 'topic=ajax&framework=pjs';

Var url = '/cgi-bin/myAjaxHandler.cgi';

var myAjax = new Ajax.Request(url,{

method: "post", // get/post

parameters: pars,

onComplete: cbProcessResponse // Our old callback function

});

� Ajax.PeriodicalUpdater(container, url[, options])

Page 21: Building Applications Using Ajax

Tips

� Don't overuse AJAX, the usability requirements for JavaScript applications are quite different than the requirements for regular web pages.

� Escape content sent to the server.

� Use AJAX activity indicators.

� http://www.napyfab.com/ajax-indicators/

Page 22: Building Applications Using Ajax

Debugging AJAX

� Always test your PHP/Server-side code before integrating it with the JavaScript side.

� Always check xhr.status

� Use FireBug to pin-point errors, and trace performance bottle-necks.

� Download from http://www.getfirebug.com/

Page 23: Building Applications Using Ajax

Resources

� AJAXIAN - http://ajaxian.com

� AJAX info - http://ajaxinfo.com

� AJAX Lesson - http://ajaxlessons.com

� Go4Expert - http://go4expert.com

Page 24: Building Applications Using Ajax

Thanks!

� Hussain Fakhruddin

� Teknowledge Software

� The wonderful audience.