您的位置: 首页 / Design / 一定要用 Ajax 的十种情况

一定要用 Ajax 的十种情况

Published at Dec 6, 11pm / Keywords: ,

对于熟悉或者是关注 Web 设计的人来说,Ajax 已经不是什么陌生的概念。GmailFlickrdel.icio.us 等“时髦”的网络应用,将并不新鲜的 Ajax 技术迅速捧红。而软件巨头微软则抛出 Live.com 将 Ajax 应用的潜力彻底发挥出来。

作为 Blog 这一 Web2.0 的先锋应用,似乎还没有和 Ajax 这项 Web2.0 的特色技术结合。虽然目前有这样的尝试,例如 Bloxpress 以及在很多 Blog 上出现的 Live Search,但给我的感觉是这些 Ajax 应用非但没有给用户带来什么便利,反而打乱了用户的浏览习惯。作为 Web 设计者,如何合理的使用 Ajax 技术成为一个很关键的问题。Alex Bosworth 的这篇文章讲述了几种必须要用 Ajax 的情况以及几种不应该应用 Ajax 的方面,写的很不错,有兴趣的可以看看。不过对于这个问题的理解,每个人应该都不会太一样,Google 的 Gmail 同样会用 Javascript 更换大量的页面内容,由此还获得了非常好的浏览器兼容性。所以有的时候还是要看具体应用来决定。


It’s been well over a year now since GMail changed the way everyone thought about web apps.

It’s now officially annoying to use web apps that haven’t replaced clunky html functionality with peppy Ajax goodness.

Here are places Ajax should now be required in a web application:

* Form driven interaction.

Forms are slow. Very slow. Editing a tag on a del.icio.us bookmark? Click on the edit link to load the edit bookmark form page, then edit the field and hit submit to wait for the submission to go through, then return to the previous page and scroll down to find the bookmark to see if the tags look right. Ajax? Click on the edit link to instantly start changing tags, click on the submit button to asynchronously send off changes to the tags and quickly see in place what changed, no reloading the entire page.

* Deep hierarchical tree navigation.

First of all, applications with deep hierarchical tree navigation are generally a nightmare. Simple flat topologies and search/tagging works very well in most circumstances. But if an application really calls for it, use Javascript to manage the topology ui, and Ajax to lessen the burden on the server by lazy loading deep hierarchy data. For example: it’s way too time consuming to read discussion threads by clicking through and loading completely new pages to see a one line response.

* Rapid user-to-user communication.

In a message posting application that creates immediate discussions between people, what really sucks is forcing the user to refresh the page over and over to see a reply. Replies should be instant, users shouldn’t have to obsessively refresh. Even Gmail, which improves on the old hotmail/yahoo mail ‘refresh inbox, refresh inbox’ symptom, doesn’t really push Ajax far enough yet in terms of notifying new mail instantly.

* Voting, Yes/No boxes, Ratings submissions.

It’s really too bad there are no consistent UI cues for Ajax submission, because submitting a vote or a yes/no response is so much less painful when the submission is handled through Ajax. By reducing the time and impact of clicking on things, Ajax applications become a lot more interactive – if it takes a 40 seconds to register a vote, most people would probably pass unless they really care. If it takes 1 second to vote, a much larger percentage of people are likely to vote. (I have 2008 movie ratings on Netflix versus 210 ratings on IMDb.com).

* Filtering and involved data manipulation.

Applying a filter, sorting by date, sorting by date and name, toggling on and off filters, etc. Any highly interactive data manipulation should really be done in Javascript instead of through a series of server requests. Finding and manipulating a lot of data is hard enough without waiting 30 seconds between each change in views, Ajax can really speed this up.

* Commonly entered text hints/autocompletion.

Entering the same text phrases or predictable text phrases is something software/javascript can be good at helping out with. It’s very useful in del.icio.us and GMail, for quickly adding tags/email addresses.

For heavy use applications such as a webmail client or a blogreader, users have the luxury of time to learn new UI concepts, and the frustration of interacting with a slow interface. This kind of application is a perfect opportunity to leverage Ajax everywhere. The more frequently users use an application, the more Ajax should be powering that use.

However for most web applications, it doesn’t make any sense to use Javascript for everything or even anything. Ajax only really clearly helps in a limited set of circumstances; the web already worked pretty well before Ajax and there are a lot of pitfalls and drawbacks to using Ajax in web development. A straight html weblog works just fine without being generated dynamically on the client with a stream of asynchronous messages from the server. Plain old HTML also works great for documents, or navigating between documents. Simple or rarely used applications can get along fine without putting in a bunch of Javascript.

Here are some places Ajax shouldn’t be used:

* Simple forms.

Even though forms are the single biggest beneficiary of Ajaxification, a simple comment form, or submit order form, or other one-off rarely used form does not benefit from Ajax driven submission. Generally, if a form is not used much, or it’s critical to work properly, Ajax is not that helpful.

* Search.

LiveSearch on blogs is more annoying than useful. There’s a reason that Google Suggest is staying in beta and not going on the front page of Google. Searching on Start.com Live.com doesn’t allow use of the back button to see a previous search, or previous pages. Maybe it’s possible that no one has gotten this right yet, but getting this right is hard enough that it’s generally not a good idea, or more trouble that it’s worth.

* Basic navigation.

In general, driving basic site/application navigation using Ajax is an awful idea. Why would anyone want to spend time writing code to emulate the browser behavior when they could spend time making their application better? For basic navigating between documents, Javascript doesn’t help.

* Replacing a large amount of text

Ajax saves a complete refresh of the page, so small pieces of the page can be more dynamically updated. But if nearly everything on a page is changing, why not just request a new page from the server?

* Display manipulation.

Even though it seems that Ajax is purely a UI technology, it’s not. It’s actually a data synchronization, manipulation and transfer technology. For maintainable and clean web applications, it’s a good idea not to have Ajax/Javascript manipulate the interface directly at all. Javascript can stay separate and simply manipulate the XHTML/HTML DOM, with CSS rules dictating how the UI displays that data. See this post for a simple example of using CSS instead of Javascript to control display.

* Useless widgets.

Sliders, drag and drops, bouncies, mouse gestures, whatever. Mostly these widgets can be replaced with more intuitive controls, or eliminated altogether in favor of simplicity. In picking colors, maybe a slider widget is useful to pick the exact shade. But in picking a price point in a store, a slider to pick the price to the cent is just overkill.

OK I fibbed in the title, I only posted 6 places Ajax should be used and 6 places it probably shouldn’t. But look at this post more four-dimensionally; I have set up a wiki page on SWiK for places to use Ajax, and I or anyone else can fill in more places Ajax is useful as time goes by.

BTW, I’m now trying to use Feedburner to track my RSS feed, if you aren’t subscribed to the feedburner feed, please subscribe to http://feeds.feedburner.com/AlexBosworth.

发表您的观点或推荐本文 Loading...