Difference between revisions of "BTC640/ProcessingAjax"
(Created page with '= Lecture = Ajax is simply a way to make asynchronous (non-blocking) requests over the internet. Normally to make a request to a server you need to "go" to a URL, perhaps with s…') |
(No difference)
|
Revision as of 12:45, 28 March 2012
Lecture
Ajax is simply a way to make asynchronous (non-blocking) requests over the internet. Normally to make a request to a server you need to "go" to a URL, perhaps with some parameters. This is the traditional flow:
- The user clicks on a button or a link.
- The browser creates a URL for that action and queries the server for it.
- The server sends back a new page.
- The browser leaves the old page and displays the new page.
All web applications were built on this model originally. The problem is that reloading the page is expensive (both in bandwidth and time) and depending on what you're trying to do the user experience can be unacceptable. Just try to imagine Google Maps if you had to reload the page for every pan or zoom request.
Two sort-of-solutions for this problem before Ajax were frames and later iframes. Frames amost everybody hated (for various reasons). Iframes are better in many ways but they have some problems: a reload of the iframe is required to change its content, and the iframe itself has a fixed size.
Modern websites just use Ajax to create dynamic pages. An example of a flow with Ajax is:
- The user clicks on a button or a link.
- The request is handled 100% in JavaScript code, where:
- An XMLHttpRequest object is created
- A callback function is associated with that object
- A URL is created for the request (same as in the traditional flow but you have to do it yourself)
- The request for that page is sent to the server asynchronously (in the background), the user cannot see anything happening at this point.
- When the response is received from the server the callback function is called automatically.
- The callback function modifies a part of the page dynamically using DOM access methods.