Intro to Ajax Fred Stluka Jan 25, 2006

advertisement
Intro to Ajax
Fred Stluka
Jan 25, 2006
What is Ajax?
• "Asynchronous JavaScript and XML"
• New name for an old technique:
–
–
–
–
–
JavaScript + DHTML + XMLHttpRequest
In use since at least 1997
I've used it since 2000
Finally someone gave it a name
Already enabled in your Web server and browser
• Use JavaScript asynchronously behind the scenes
to load additional data (typically XML) without
discarding and reloading the entire Web page.
1/25/2006
Intro to AjaxFred Stluka
2
Why use Ajax?
• Your users will soon demand it
– Not just another cool (geeky) technology
– Very user-visible effect
– Rich UI experience in a Web page
• Portable across browsers
• Plus, all advantages of zero-install Web app
– No install done for this demo
– No "DLL Hell"
1/25/2006
Intro to AjaxFred Stluka
3
Why use Ajax?
• Client/Server Apps:
– Dynamic data
– Static forms, controls, code, etc.
– Efficient, but not flexible
• Traditional Web Apps:
– Dynamic data
– Dynamic forms, controls, code, etc.
– Flexible, but inefficient, and noticeably slow
• Ajax Apps:
– Dynamic data
– Static or dynamic forms, controls, code, etc.
– Best of both worlds
1/25/2006
Intro to AjaxFred Stluka
4
Why use Ajax?
• Geeky reasons:
– Multithreaded data retrieval from Web servers
•
•
•
•
Pre-fetch data before needed
Progress indicators
Appearance of speed
Avoids need for setTimeout()
– Less bandwidth required; less server load
• Reload partial page, not entire page
• Load data only, not even partial page
1/25/2006
Intro to AjaxFred Stluka
5
How much to use Ajax?
•
•
•
•
As little or as much as you like
No need to abandon what you already do
One more item in your "bag of tricks"
Start by jazzing up your existing UI
1/25/2006
Intro to AjaxFred Stluka
6
How to use Ajax?
Simple!
Use the
XMLHttpRequest
Object
1/25/2006
Intro to AjaxFred Stluka
7
XMLHttpRequest Methods
•
open (“method”, “URL”, [async, username, password])
– Assigns destination URL, method, etc.
•
send (params)
– Sends request including postable string or DOM object data
•
abort ()
– Terminates current request
•
getAllResponseHeaders ()
– Returns headers (name/value pairs) as a string
•
getResponseHeader (“header”)
– Returns value of a given header
•
setRequestHeader (“label”,”value”)
– Sets Request Headers before sending
1/25/2006
Intro to AjaxFred Stluka
8
XMLHttpRequest Properties
•
onreadystatechange
– Event handler (your code) that fires at each state change
•
readyState
0 = uninitialized
1 = loading
2 = loaded
•
3 = interactive (some data has been returned)
(broken in IE 6.0)
4 = complete
status
– HTTP Status returned from server: 200-299 = OK
•
responseText
– String version of data returned from server
•
responseXML
– XML DOM document of data returned
•
statusText
– Status text returned from server
1/25/2006
Intro to AjaxFred Stluka
9
Simple Example
var req = new XMLHttpRequest();
req.onreadystatechange = myHandler;
req.open("GET", "servlet", true);
req.send("p1=abc");
...
function myHandler() {
if (req.readyState == 4) {
doSomethingWith(req.responseXML);
}
else if (req.readyState == 3) {
showProgressIndicator();
}
}
1/25/2006
Intro to AjaxFred Stluka
10
Demos
• http://bristle.com/~fred/#ajax
–
–
–
–
–
–
–
–
–
Simple demo
More demos
Google Suggest
Google Maps
Language translation
Mouse gesture as password
Typing speed as password
Classified ads tied to map
"Mashups"
1/25/2006
Intro to AjaxFred Stluka
11
Security Issues
• Can only hit domain the Web page came from
– Cannot access a 3rd party Web Service
– However:
• You can wrap those requests through your own server
• User can allow access to specific sites via browser security settings
• IFRAME can access any site (instead of XMLHttpRequest)
1/25/2006
Intro to AjaxFred Stluka
12
Advanced Topics
• http://bristle.com/~fred/#ajax
– XSLT and XPath support (Sarissa)
– Serializing Java Beans as XML
• XMLBeans, JAXB, Zeus, Jbind, Castor, Betwixt
– Serializing Java Beans as JavaScript objects
• JSON -- JavaScript Object Notation
– 2-way Mapping of Java Beans to JavaScript objects
• DWR -- Direct Web Remoting
– Ajax Component Libraries and Toolkits:
• Dojo, Prototype, HTC, XBL
• Implemented as JSP tag libraries or pure JavaScript
– Ajax Frameworks
– Ajax Patterns
1/25/2006
Intro to AjaxFred Stluka
13
Download