Sure, Ajax gives you ...
But what about ...
"Impossible ... It's all so new"
People encounter similar problems ...
... Leading to similar solutions
Ajax isn't that new


Follow Web Standards
The Browser is Not a Desktop
Ensure Smooth, Continuous, Interaction
Provide Affordances
Support Customisation
Make it Fun
Embrace Javascript
Accept Workarounds Where Necessary
Partition into Multiple Tiers
Develop for Compatibility
Reduce Bandwidth
Deal with Latency
Tame Asynchrony
Go Easy on the Browser
Practice Graceful Degradation
Online at AjaxPatterns.org
Currently ~70 Ajax Patterns
Refactoring and Ajaxifying
Foundational Technology Patterns (11)
Programming Patterns (23)
Functionality and Usability Patterns (28)
Development/Practice Patterns (8)
Better Conflict Resolution through the Judicious Application and Objective Matrix-Driven Comparison of the Ajax Patterns
AKA
Pattern Smackdown
Ajax Lite
Web App after Ajaxification.
AKA "Website", "HTML++"
Ajax Lite: Amazon Tags
Ajax Deluxe
Ajax to the max.
AKA "Web App", "Client/SOA"
Ajax Deluxe: Writely
Ajax Lite
+ Graceful degradation
+ Low risk - familiar to existing users
+ Smooth migration
Ajax Deluxe
+ Desktop substitute
+ Architect's dream - Complete model-view separation
+ Web services momentum
+ Performant - small payloads
XMLHttpRequest Call
Object dedicated to remoting
+ Purpose-built
+ Extra functionality, e.g. abort(), onreadystatechange
+ People (erroneously) equate it with "Ajax"
+ Well-understood
May be Faster for small responses
IFrame Call
Set the IFrame's source, then grab the response
+ Broader compatibility
+ Browser history, Back button (Unique URL pattern)
+ May be more suited to HTTP Streaming
May be Faster for long responses
XMLHttpRequest Call
Object dedicated to remoting
+ Purpose-built
+ Extra functionality, e.g. abort(), onreadystatechange
+ People (erroneously) equate it with "Ajax"
+ Well-understood
May be Faster for small responses
IFrame Call
Set the IFrame's source, then grab the response
+ Broader compatibility
+ Browser history, Back button (Unique URL pattern)
+ May be more suited to HTTP Streaming
May be Faster for long responses
Semantic Message (Plain-Text, XML, JSON)
Browser downloads raw structure, then parses/stores/displays
HTML Message (AKA "AHAH")
Browser downloads HTML, then sticks onto page with innerHTML.
Semantic Message (Plain-Text, XML, JSON)
+ Shorter message
+ Can retain structure for local processing
+ Plug into web services
+ Easier to test service
+ Cleaner model-view Separation
HTML Message (AKA "AHAH")
+ Longer message, but less processing time
+ Easier graceful degradation
+ Can generate from server-side library
+ Less Javascript/DOM knowledge required
XML Message
XML: Standard industry message format
JSON Message
JSON: Lightweight, raw, alternative to XML
XML Message
+ Familiar, popular, "no-one ever got fired for choosing XML..."
+ Self-documenting
+ Surrounding standards (XSLT, XPath, etc.)
+ Broader tool/framework support
+ May be faster to parse
JSON Message
+ Smaller payload
+ Simpler structure
+ Concrete format, akin to an XML dialect
+ Broader compatibility
+ May be faster to parse
Periodic Refresh (AKA "Pull", "Poll")
Keep checking for server changes
HTTP Streaming (AKA "Push", "Comet")
Long-lived connection keeps pumping out new data.
Periodic Refresh (AKA "Pull", "Poll")
HTTP Streaming (AKA "Push", "Comet")
Javascript patterns and idioms
Libraries, Frameworks, Patterns (Yahoo!)
New technologies: Local storage, SVG, XForms, WHAT-WG Controls
Browser trends