YOUR FEEDBACK
shirley wrote: SharePoint 2007 can support Web 2.0. I think Microsoft Office SharePoint Server...
Cloud Computing Conference
March 30 - April 1, New York
Register Today and SAVE !..


2008 East
DIAMOND SPONSOR:
Data Direct
Frontiers in Data Access: The Coming Wave in Data Services
PLATINUM SPONSORS:
Red Hat
The Opening of Virtualization
Intel
Virtualization – Path to Predictive Enterprise
Green Hills
IT Security in a Hostile World
JBoss / freedom oss
Practical SOA Approach
GOLD SPONSORS:
Software AG
The Art & Science of SOA: How Governance Enables Adoption
PlateSpin
Effective Planning for Virtual Infrastructure Growth
Fujitsu
Automated Business Process Discovery & Virtualization Service
Ceedo
Workspace Virtualization
Click For 2007 West
Event Webcasts

2008 East
PLATINUM SPONSORS:
Appcelerator
Think Fast: Accelerate AJAX Development with Appcelerator
GOLD SPONSORS:
DreamFace Interactive
The Ultimate Framework for Creating Personalized Web 2.0 Mashups
ICEsoft
AJAX and Social Computing for the Enterprise
Kaazing
Enterprise Comet: Real–Time, Real–Time, or Real–Time Web 2.0?
Nexaweb
Now Playing: Desktop Apps in the Browser!
Sun
jMaki as an AJAX Mashup Framework
POWER PANELS:
The Business Value
of RIAs
What Lies Beyond AJAX?
KEYNOTES:
Douglas Crockford
Can We Fix the Web?
Anthony Franco
2008: The Year of the RIA
Click For 2007 Event Webcasts
SYS-CON.TV
TOP LINKS YOU MUST CLICK ON


AJAX Custom Error Handling: Enhancing the Interactive User Experience
AJAX and Rich Internet Applications

AJAX has become an increasingly popular tool to develop RIAs. With AJAX, as with many new technologies, developers often overlook core application issues such as error handling. While many current AJAX frameworks come with ways to handle errors, the built-in error-handling methods might not be quite what you need, and it's possible that you might not even want to adopt a specific AJAX framework at all. So how do you handle errors in AJAX?

This article will guide you through one possible way to implement custom error handling in AJAX using many of the same techniques that you'll likely read about in other parts of this magazine. Because AJAX represents a big paradigm shift in the way users interact with Web applications, it's easy to leave your users confused when things don't quite work as they'd expected. To enhance the user experience, it's equally important to alert them when something goes exactly as planned and enhances the interactive experience.

Consider for a moment a hypothetical AJAX application that updates employee information. Users will fill out fields and click on a "Save" button to process the update. In a traditional Web application the user expects to wait a moment while the server updates the record then anticipates another page that displays a confirmation message. This is the typical request/return scenario that our Internet conditioning forces us to accept.

Now let's look at the same example using AJAX techniques. The end user still fills out form fields and clicks on the "Save" button but instead of seeing the confirmation message, nothing seems to happen. This can leave the user confused and unsure that his information was saved, yet with AJAX, the database update occurred exactly as expected. Here's how you can implement a messaging and error system in a simple employee information maintenance application that will alert a user as records are updated.

Process at a Glance
The process isn't much different from any typical AJAX request/response. A request is created, sent to the server, checked for error conditions, XML is sent back to your request page, and checked in the browser for a status message, which is displayed, if it exists.

Create an Area to Display Status Messages
We'll begin to create our code by creating our CSS format classes for our status messages. Let's create three styles for our application's potential conditions: error, success, and hidden, which correspond to the two cardinal states (error and success) of our query (hidden being used when no update is currently active):

.error{
     font-family: Arial, Helvetica, sans-serif;
     font-size: 10px;
     font-weight: bold;
     color: #FFFFFF;
     background-color: #FF0000;
     display:block;
}
.success {
     font-family: Arial, Helvetica, sans-serif;
     font-size: 10px;
     font-weight: bold;
     color: #FFFFFF;
     background-color: #009900;
     display:block;
}
.hidden {
     display:none;
}

Once we have our styles set, we have to put them to use. We'll do this by creating an area in our application to display the status messages returned by the server. This display area can be any type of HTML container such as table, div, or span; we'll use a div. Once the container is created, we'll set the initial style to hidden, as follows:

<div id="message" name="message" class="hidden"></div>

Creating the ColdFusion Page To Process the Request.
At this point, you'll find that the code you've created doesn't do much - you have three CSS styles, one of which is called by your container div, but its class is set to not display on the rendered page. To create conditions where an error or success message might actually exist, we'll look at a ColdFusion template that updates an employee's database record. Since the focus of this article is on error handling we'll skip the details of updating the record and get right to the process of building the XML that returns our status message.

First let's look at an example of processing an update of one of our employee records. Since this is a situation where no data is being returned (because we're not using a SELECT statement), we really only need to deliver either a success or error message to our user.

To do this, we'll have to create a variable to hold the XML string then add the XML declaration to it:

<cfset xml = "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes"" ?>">

Now that we've created our variable, "xml," we're going to want to do some simple data validation - in this case, to make sure that a valid department ID was passed into the template. If the department ID passed in is not valid, we're going to want to set the first node of the XML document to (<error>), add the error message, and close the error node (</error>). For our purposes, we'll assume that a "departmentID" value of 0 or of a non-numeric value constitutes an invalid condition. We're also going to include "try/catch" conditions to cover database errors and general failures:

<cfif departmentId eq 0 OR NOT IsNumeric(departmentId)>
<cfset xml = xml & "<error>Invalid department specified.</error>">
<cfelse>
     <cftry>
<cfcatch type="database">
     <cfset xml = "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes"" ?>
<error>There was a error communicating with the server, please call the help desk at
x555.</error>">
</cfcatch>
<cfcatch type="Any">
<cfset xml = "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes"" ?>
<error>There was a error processing your request. Please try again later or call the help
desk at x555.</error>">
</cfcatch>
</cftry>
</cfif>

One thing to note here is that the entire XML string is overwritten in the catch statement. This eliminates a situation caused by an error being thrown in the middle of building the XML string. Specifically this condition sends an incomplete and unpredictable XML document back to the requesting page.Let's walk through an example of a successful and unsuccessful update of an employee record. The main screen of the employee update application is shown in Figure 1. For this example let's say that a phone extension can only be used once per employee in a company. When a user clicks on the "Update Employee" link the main screen will prepare the AJAX request and send it to a ColdFusion template. The template will then process the update and send a XML message back to the main screen.

About Ryan Anklam
Ryan Anklam is the Chief Information Officer at Innova Creative Media, Inc. His current focus is on using ColdFusion to develop large scale hosted applications. Ryan has been developing ColdFusion applications since 1996. In addition, he is also a Microsoft Certified Professional with demonstrated skills in C# and SQL Server.

YOUR FEEDBACK
SYS-CON Italy News Desk wrote: SOA Web Services Journal Editorial Board Commentary Can Web services be used in other communication platforms besides the Web? Yes, they can. Web services are described by WSDL, which is used to describe a service using XML, not necessarily one that is used over the Web. In order to understand this last statement, you need to ask the question: What is necessary for operation over the 'Web'?
SOA Web Services Journal News Desk wrote: SOA Web Services Journal Editorial Board Commentary: Communication Platforms. Can Web services be used in other communication platforms besides the Web? Yes, they can. Web services are described by WSDL, which is used to describe a service using XML, not necessarily one that is used over the Web. In order to understand this last statement, you need to ask the question: What is necessary for operation over the 'Web'?
ENTERPRISE OPEN SOURCE MAGAZINE LATEST STORIES . . .
Minerva Infotech has launched a custom Content Management System (CMS). Minerva Infotech CMS 1.0 is used to create, edit, manage, and publish content in a consistently organized fashion. The content management may include computer files, image media, audio files, video files, electroni...
Following 5 years of research and development, Cfengine AS has released an upgrade of the Open Source, self-repairing software cfengine based on its Promise Theory technology. Cfengine is a self-repairing maintenance engine capable of fixing errors and misalignments in the Data Center ...
JumpBox has announced the release of 38 Open Source applications to the Amazon Elastic Compute Cloud (EC2) service. The release enables server application deployment, configuration, and management almost completely independent of any user hardware. JumpBox offers small to mid-sized org...
With a global recession potentially looming, software development managers are being asked to slash resource budgets in 2009 while maintaining schedules. When you need to deliver more features with fewer coding resources, there is only one answer: hybrid development. Hybrid software de...
It's no secret that open source has turned into a market force, which is giving enterprise software some tough competition. The same can be said for SaaS businesses, which are steadily eating into the market share of the established on-premise players. While it could easily be assumed ...
Wikis are a great software tool for collaboratively creating and editing content. They seem to be an obvious choice for building a community Web infrastructure. Yet they have serious drawbacks that made JBoss.org choose a Content Management System (CMS) instead of a Wiki to build its n...
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021

Click Here

SYS-CON FEATURED WHITEPAPERS

ADS BY GOOGLE