Google Suggest http://labs.google.com/suggest Lecture 17: Ajax (Asynchronous JavaScript And XML) Wendy Liu CSC309F – Fall 2007
1 2
Spinning Wheel Progress Indicator
Low-level View
The Basics
3 4
1 Classic vs. Ajax Synchronous vs. Asynchronous
5 6
Overview of Ajax XMLHttpRequest
It is not a new programming language, but a new way (technique) to use existing standards JavaScript object To create better, faster, and more user-friendly and interactive Provide two views of the response web applications String (text) and XML Based on JavaScript and HTTP requests Uses JavaScript as its programming language Capable of issuing GET, POST, HEAD, PUT, Uses the XMLHttpRequest object to communicate directly with DELETE, OPTIONS requests the server Trades data with a web server without reloading the page Security limitations apply Uses asynchronous data transfer (via HTTP requests) between the browser and the web server Same point of origin Allowing web pages to request small bits of information from the Can only connect to same domain as currently loaded server instead of whole pages page It is a browser technology independent of web server software 7 8
2 XMLHttpRequest Properties onreadystatechange
Receiving data (handle response) Defines a function to receive data returned by onreadystatechange the server after a request is sent readyState Must be set before sending request responseText The following code defines a function for this responseXML purpose (with an empty body for now) var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { // code for receiving response data } 9 10
readyState Update the Function This property holds the status of the server's xmlhttp.onreadystatechange=function() response { Each time the readyState changes, the if (xmlhttp.readyState==4) onreadystatechange function will be executed { State description // Get the data from the server's response 0 The request is not initialized } 1 The request has been set up 2 The request has been sent } 3 The request is in process 4 The request is complete
11 12
3 responseText responseXML
Retrieve text data returned by the server Retrieve document data returned by the server Type: DOMString (readonly) Type: Document (readonly) xmlhttp.onreadystatechange=function() { var xmldoc=xmlhttp.responseXML.documentElement; if (xmlhttp.readyState==4) { You can access it as a DOM document document.getElementById(‘formentry’).value = As you did in A1 xmlhttp.responseText; } }
13 14
XMLHttpRequest Methods Execute the Ajax Function
Asking for data (send request) Want it to run "behind the scenes" open() send()
15 16
4 The Basic Ajax Process JavaScript Define an object for sending HTTP requests Initiate request Examples Get request object Designate a request handler function Supply as onreadystatechange attribute of request Initiate a GET or POST request Putting it Together Send data Handle response Wait for readyState of 4 and HTTP status of 200 Extract return text with responseText or responseXML Do something with result
17 18
The Basic Ajax Process (cont’d) Define a Request Object
HTML var request; Loads JavaScript Designates control that initiates request function getRequestObject() { if (window.XMLHttpRequest) { Gives ids to input elements that will be read by script return(new XMLHttpRequest()); } else { return(null); } } Browsers that support it
19 20
5 Initiate Request Handle Response function sendRequest() { function handleResponse() { request = getRequestObject(); Response handler function name if (request.readyState == 4) { request.onreadystatechange = alert(request.responseText); handleResponse; request.open("GET", "message-data.html", } true); } request.send(null); } URL of server-side resource Text of server Response is returned from server response (handler is invoked multiple times)
Don't wait for response (Default). Data (null for GET) Send request asynchronously
21 22
Complete JavaScript Code XHTML Code (show-message.html) (show-message.js) var request; return(new ActiveXObject("Microsoft.XMLHTTP"));
Ajax: Simple Message |
---|