building applications using ajax

24
WebOSS ‘07 S Pradeep Building Applications using AJAX

Upload: spradeep

Post on 22-May-2015

3.862 views

Category:

Technology


0 download

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.

TRANSCRIPT

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.