Ajax type applications allow developers to update parts of a web page without needing to refresh the entire page. Click on a link and another area of the screen is updated, click a toggle arrow to expand and collapse an inline detail box, submit a form and receive confirmation without updating the page, and so on.
 This type of interaction uses asynchronous HTTP calls back to the server (to get data, or process form submissions, and so on) and client side JavaScript to update specific parts of a page (usually defined using 

tags).

ColdFusion 8

makes this type of interaction very simple by allowing controls to be bound to other controls, so that when one control changes (or an event occurs) a second control may be updated by making an asynchronous call to ColdFusion on the server.
 To demonstrate this, here is a simple example. A list of art items is displayed in a
control, and clicking on any item updates a description below it. The list of descriptions are not in the client, rather, when an art item is selected the following CFC method is invoked on the server:
 
 
 
 
 
 
 
 
 
 
 SELECT description
 FROM art
 WHERE artid = #ARGUMENTS.artid#
 
 
 
 
 
 
 
 
 
 This simple method accepts an artid and returns the art description as a string.
Now for the client side code:
 
 
 SELECT artid, artname
 FROM art
 ORDER BY artname
 
 
 
 
 
 
 
 First the art list is retrieved (and yes, this is a bad example, the query should have been in the CFC too, not in the client, but I wanted to keep this example as simple as possible).

is used to display the list of art items. And then is used to define a and to provide a binding. This points to the previous CFC method, and passes {artid} (the name of the control) as an argument. This way, whenever the selection in the changes, the binding is fired, the CFC method is invoked, and the display is updated with the returned string.