XMLHttpRequest is becoming more and more popular, and many people are currently exploring what we could do with it. Unfortunately this also causes people to reinvent old and forgotten usability problems.
I have been using XMLHttpRequest in several projects for a little over a year. It has a lot of advantages, since it enables you to create a web application that can have the same interactive experience as normal programs.
But, there are a few essential issues to keep in mind:
This one should be obvious. XMLHttpRequest strength lies in the ability to set or retrieve parts of a page. But by loading entire pages, you are preventing the normal flow of a site. You will no longer be able to bookmark a page, use the back button (in some cases), or know where you are by looking at the address bar (remember the problems we had with frames?)
One offender is Google Maps
The difference between the two has been a source of discussion for a long time, but essentially a web application is a program made using web technology - a website is a bunch of pages linked together.
A web application would benefit by the use XMLHttpRequest, but a web application should also conform to program usability guidelines - like Apple's Human Interface Guidelines. A website should instead conform to website guidelines.
When mixing the two, you are heading into trouble. It is then no longer about technology - but about user expectations. Do your visitors expect to see an application or a bunch of pages? Do your visitors expect your website to update itself on the fly?
Say, you want to search for the word "usability". Your primary locus of attention is then to write this word, and secondly it is to find article about it. If the site then starts a live search while you type, it will break what you are trying to do.
The first letter you type is "u", and the live-search will return all the results that contain "u" somewhere in the text. Now, you might get lucky - and the article might be at the top of the list, but most likely it will display a lot of irrelevant articles.
Not only did it stop your workflow, it also forces you to spend time looking at something you do not need. Writing "usability" takes 1.8 seconds for the average person, but since live-search interrupted this it now takes 4-10 seconds (using GOMS).
One solution is to add a delay, so that it will not do anything until you stop for a period of time (usually 0.6 seconds). This will allow you to complete the word, and get the benefit of XMLHttpRequest.
This is not just about live-search, but also about validating form fields etc.
Objects like mobile phones, PDA's, screen readers and search engines cannot use XMLHttpRequest. If your site relies on this technology to function, it will become inaccessible.
Always consider how to handle these devices.
Confirmation pages are essentially a waste, and only exist because a normal web form has to submit the date in order to process it. XMLHttpRequest solves this, and enables you to confirm actions taken - directly where it happens.
XMLHttpRequest can be used to e.g. save data directly, without the need to click submit or save. This might sound great, but it conflicts with one very important usability principle - "Forgiveness".
Forgiveness allows the user to explore your interface, add or edit information without actually changing anything. This is important when creating a web application, since most do not offer "Undo what-I-just-did".
With every new approach, there is a normal tendency to over-use it. But don't. Always consider if XMLHttpRequest is relevant for the user. Is it just noise that breaks the users flow, or does it really accelerate their workflow.
Full access for... $9 per month
Full access for... $99 per year
Join 'The Weekly Update' to get an email every Friday afternoon with the latest from Baekdal + noteworthy articles from around the web.
What the shift in media is really all about.
Free for subscribers
$8.79 on Amazon
It is not about creating a shop in a tab. It is about turning communication into sale.
Free for subscribers
$7.58 on Amazon