By Jason A. Clark
What’s in it for Libraries?
Libraries and information agencies have been slower to embrace Ajax, but it’s not for a lack of library-use cases. In a library setting, Ajax could be used for speeding up digital library search applications using a link to activate a process that matches multiple ISSNs to compile a list of electronic journals, or even making quick requests to validate a user’s personal information as they log into a “My accounts” section of the catalog.
Let’s look at registering for an Interlibrary Loan (ILL) and requesting a book. Say Susan, a hypothetical academic library user, needs to perform these tasks. In a traditional Web interaction, she would have to navigate through the registration form to enter data for basic contact info, a username, and a password. She might have to submit possible usernames, wait for the form to talk to the server, only to come back and tell her that the username she entered is taken—at which point she also realizes that every bit of data she entered into the form has disappeared. An Ajax Web interaction can provide shortcuts to this process. Rather than sending the whole form to the server for an answer, the Ajax method sends a request on the piece of the form in question behind the scenes to see if Susan’s chosen username is already in use. Because the response from the server is returned almost immediately, Susan receives instant feedback telling her to choose another username. There’s no loss of data or waiting for pages to reload for an answer.
Later in the process, Susan is using an ILL form to request a book. In a traditional Web interaction, there would be lots of typing and cutting/pasting from the catalog to enter the book information into the request form. Ajax can make this process less onerous. As Susan types into the book title section of the request form, she receives a list of the possible titles right below the form field that match her keystrokes. She sees her book title, clicks on it, and the book title section is populated. Behind the scenes, Ajax has made a query to a library catalog title list matching Susan’s keystrokes to entries in the title list and then pushed that data back to Susan as she types. Susan has similar experiences with the author and ISBN sections of the request form. She finishes quickly and moves on to continue her research with a smile on her face.
Ajax can also make searching and browsing library resources easier. Consider the case of John, another hypothetical library user, who has been surfing the Web looking for sources for a paper on biotechnology. In time, he makes his way to the library Web site and finds the pages listing the library’s licensed databases and indexes. If the Web page was set up for a traditional Web interaction, he would click from page to page looking for subjects that might match his research needs—biology, engineering, and health sciences. He would click a link, the page would process and reload, the new page would appear, and so on.
An Ajax-enabled page would take advantage of John’s research needs without pushing him through a series of pages. With an Ajax interaction in place, John visits the library’s licensed databases and indexes page. He rolls over a link to a list of subjects and is presented with a list of all the subject categories for the library indexes and databases. In the background, Ajax has made a request to grab an XML file holding the list of subject categories. The list is retrieved and it then populates the pop-up list that John sees. For John, the feedback is immediate. He gets an instant snapshot of the subject categories and begins moving forward with his research. Later on, John clicks the biology subject category link. A section of the page changes and shows John a listing of the top biology indexes and databases as well as related subject categories such as health sciences and chemistry to investigate if needed. Ajax reduces the need to click through to more information, bringing data into the user’s working environment. John continues his research happily, unaware that his life was made easier by Ajax.
AJAX AT WORK IN LIBRARIES
Although I could go on with hypothetical possibilities that warrant some of the hype surrounding Ajax, it’s not necessary to restrict the discussion to the hypothetical. More and more libraries are starting to use Ajax for actual projects.
At OCLC research, you’ll find the Phoenix Live OPAC [http://phoenix.orhost.org], a “livesearch” (instant search) of a WorldCat subset of the Phoenix Public Library’s collection. As a user types search terms, quick queries are made to the WorldCat database and the results are displayed almost instantly beneath the search form. It’s amazing to watch a search of a significant public library collection take place in seconds using Ajax.
In Perth, Western Australia, the Curtin University of Technology Library is using Ajax to power its federated search function [http://library.curtin.edu.au/cgi-bin/search/search.cgi?query=&submit=Search]. A single search across several library databases using multiple behind-the-scenes server requests brings all of the data together into targeted sections of the original search page. Curtin’s implementation is a good example of the asynchronous nature of Ajax. The requests continue firing and the search page is populated with separate results at different intervals.
A fun Ajax add-on to the library catalog exists at Virginia Tech Libraries [http://addison.vt.edu]. Called Guesstimate, it lets the user mine the catalog for the popularity of their search terms. As a user types in keywords, Guesstimate “presearches” the library catalog for the user’s search terms and displays the number of hits before the user has to actually perform a full catalog search. It’s some nice added functionality that provides the user with a sense of the strength of their keywords.
Many of these example applications have a search focus that is a logical first step for libraries. As users become more familiar with Ajax, we can expect that Ajax would move into other areas of library Web services, such as RSS feed update displays or dynamic navigation links that present different page views to a user.
HOW AJAX WORKS
Ajax is not a single programming language, but rather a series of component technologies tied together by a single goal. The goal is to quickly process data and push the data into a localized page update. Ajax achieves this effect by working asynchronously, meaning that you can make a request to a server via Hypertext Transfer Protocol (HTTP) and continue to process other data while waiting for the response. But what does that really mean? Consider the earlier hypothetical examples. In the ILL form example, it means you can make requests to a server to retrieve data about what usernames and passwords are already in use by the ILL database without refreshing the whole page. In the searching and browsing library resources example, it means you can simply load an XML file to populate the subject categories section of your indexes and databases Web page without refreshing the whole page. Let me repeat that last part one more time: without refreshing the whole page. This is what makes Ajax implementations recognizable. Ajax is able to target pieces of content on a page and run micro-requests behind the scenes to update those pieces of content. On the user end, you see an almost immediate update or page change without the usual full-screen reload.
Because Ajax exists as a series of component technologies and is able to make these components work together, today’s Ajax-enabled Web applications are able to avoid the pokey, page-at-a-time, data request/response model. Here’s a quick rundown of the suite of technologies that make Ajax go:
(x)HTML and CSS
Ajax applies these familiar Web standards for styling the look and feel of a page and to markup those areas on a page that will be targeted for data updates.
DOM (Document Object Model)
Ajax uses the DOM to manipulate dynamic page views for data. The DOM enables certain pieces of an Ajax page to be transformed and updated with data.
Ajax can use any of these standards to provide structure to the data it passes to and from a page.
Ajax uses lightweight programming language for instructions to bind all of the components together.
One thing might strike you about this list: None of these technologies are particularly new. What has changed since their creation in the 1990s is how people access the Internet today. Broadband access, coupled with speedier processing and storage on personal computers, makes Ajax a viable approach to Web applications. Unloading some processing onto client computers, along with proof-of-concept, large-scale Web applications such as Google Maps, also contribute to the acceptance curve and excitement surrounding Ajax.
EVEN Ajax isn’t perfect
Another benefit involves the Ajax single-page model. Reducing the number of pages needed to perform a task presents users with faster, streamlined interfaces and seemingly on-the-fly data updates. Because Ajax works to pass only targeted bits of data for a page, it is a very efficient use of bandwidth for data presentation. There is a great advantage to having static pieces of a Web page remain static while micro-requests go to the server to grab and bring down targeted data. Gone are the days of watching the hourglass spin.
Advocates also point to the very active Ajax developer community, which is always looking at improvements to current Ajax behaviors. Already, a number of Ajax code libraries have sprouted up that simplify Ajax requests and actions. (See prototype at http://prototype.conio.net/ and script.aculo.us at http://script.aculo.us.) In addition, the popularity of Ajax has garnered enough support that the W3C Web APIs Working Group will soon be standardizing the XMLHttpRequest object for all new browsers and updated versions of current browsers.
Of course, Ajax is not without its warts. Because the XMLHttpRequest object is essentially a de facto standard, its implementation across browsers can be a bit buggy. Most modern browsers support the XMLHttpRequest object, but there are some quirks with Opera’s implementation, screen readers, and text browsers such as Lynx. The XMLHttpRequest object is also limited in the requests it can make across domains; it can be tricky to get Ajax to request data between different servers. Another limitation of Ajax is the way it breaks down the traditional Web page model. Users are accustomed to recognizing the changing status of Web pages through the cue of a changing URL in the Web address bar of a browser. Ajax subverts this model by leaving the URL unchanged after a page update. This hampers the ability of a browser to use the back button or even link to an actual Ajax results page. (The back button and direct linking are Web conventions expected by most users; Ajax developers have started to develop workarounds to bring back this functionality for Ajax. See Mike Stenhouse’s article, “Fixing the Back Button and Enabling Bookmarking for AJAX Apps,” at http://www.contentwithstyle.co.uk/Articles/38.)
When and how to use Ajax
The question remains: When should you use it? Anytime there is a search function, you could apply Ajax. Whenever there are multistep processes (think logging into a “My accounts” section of the library), Ajax should be a consideration. While processing large or distributed data sets (think Federated Search), Ajax would be a nice option. Anytime you need to validate complex forms (think ILL), Ajax might be an answer.
Even with its limitations, Ajax is intriguing enough to warrant the widespread attention it is receiving. At its core, Ajax shifts the expectation of what a Web page is and what you can look forward to from Web applications. By relying on a user’s computer and browser to process data, carrying out multiple data requests behind the scenes and targeting single sections of a Web page for updates, Ajax presents users with a seamless interaction that rivals what you might see in a desktop application such as Word. It opens the door to a whole new breed of Web applications.