The proxy component (for example, the XMLHttpRequest object) sends a regular HTTP
request and waits, either synchronously or asynchronously, for it to be fully served. When the
response data is ready, the proxy invokes a user-defined JavaScript callback to refresh any portion
of the page that needs updating. Figure 1-2 provides a graphical overview of the model.
All browsers know how to replace an old page with a new page; until a few years ago, though,
not all of them provided an object model to represent the current contents of the page. (Today,
I can hardly mention a single modern, commercially available browser that doesn’t expose a
read/write page DOM.) For browsers that supply an updatable object model for HTML pages,
the JavaScript callback function can refresh specific portions of the old page, thus making
them look updated, without a full reload.