Back in the old Web 1.0 world of ten years ago, developers broke business processes into nice, consumable chunks called pages. It was easy to break down a business form into nice logical pieces that were easy to implement and easy for customers to understand. For example:
- A loan application. You filled out your personal information on one page, next your financial, next your employment, and finally a confirmation page.
- Buying a product. A search page, product description, shopping cart, and purchase pages.
- Booking a hotel. Enter your travel dates, desired location, search, select, and purchase.
But the introduction of too much AJAX now replaces this easy life cycle with complex, insupportable models. The worst is the insurance industry. They seem infatuated with taking very complex, ten page processes and slamming them into one page AJAX nightmares. In order to debug a problem on the eighth end user page, the developer has to start at the first page, enter in pages of test data just to get to the eight page. What used to take 10 seconds to test now takes minutes. Over and over again. And we haven't gotten this into the user's hand yet! Ouch!
Now try compound all this client-side AJAX in all the tablets, phones, and laptops coming out. Yikes! To me it seems like a plot by the consulting and design firms to keep fat support contracts to support all this spaghetti code. Yuck. Too much AJAX.
Thank goodness some sanity is out there. Retail sites seem to get it and avoid too much AJAX. Also, the new design models based on HTML5 and Responsive Design appear to lead the next generation back into supportable design models, with simpler code implementation and avoiding the too much AJAX applications that have 80 JavaScript files to build a business process in the browser.
Best Practices
In my travels with my customers, I've come to understand where AJAX in a page makes sense. Here are just a few:
- Vehicle look-up. When I pull down a menu, an AJAX call fills it with only the cars I need.
- Search terms as I type. As I type "laptop", the search bar autofills other searches to save me time.
- Content display as I navigate. As I interact on the page, content appears or pops up that is relevant to me. AJAX calls make this possible, improving my customer experience.
- Inventory checks. On the same product page, knowing it is really in stock is very helpful. Ditto for shipping charges and taxes.
- Filtering choices. As I select certain dates, only the Hotels with openings are listed, as I filter on brands, the page refreshes with content.
- Sexy interfaces that are fun to use
- Easy for developer's to troubleshoot and support
- Leveraging the devices that I want to use
- Keeping support costs down