O'Reilly logo

Closure: The Definitive Guide by Michael Bolin

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 7. Client-Server Communication

The goog.net package contains various utilities for communicating with a server from a web browser. With the growing popularity of Ajax, the most common technique is to use an XMLHttpRequest object to request updates from the server. As this chapter will explain, that is not the only option, but it is certainly a good place to start.

Server Requests

Like all modern JavaScript libraries, Closure provides a cross-browser abstraction for sending an XMLHttpRequest to the server. This section introduces the classes in goog.net that support this abstraction.

goog.net.XmlHttp

In the simplest case, the built-in XMLHttpRequest object is used to load the contents of a URL asynchronously and then pass the data to another function:

var getDataAndAlertIt = function(url) { // This line will not work on Internet Explorer 6. var xhr = new XMLHttpRequest(); xhr.open('GET', url, true /* load the URL asynchronously */); xhr.onreadystatechange = function() { // When an XHR enters ready state 4, that indicates that the request // is complete and that all of the data is available. if (xhr.readyState == 4) { // In this case, alert() is used to handle the data. alert('This alert will display second: ' + xhr.responseText); } }; xhr.send(null); }; // Because the XHR will load the data asynchronously, this call will return // immediately even though the data is not loaded yet. getDataAndAlertIt('http://www.example.com/testdata.txt'); // This statement will execute while testdata.txt ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required