AJAX: A Fresh Look at Web Development

AJAX: A Fresh Look at Web Development

ouldn’t it be nice if you could turn your plain old Web pages into something more exciting? Isn’t it time to inject some life into your decade-old Web technologies? If you feel the need for the fresher, richer, and more interactive Web experience, get to know AJAX.

If you use Google Maps or the Gmail Web client you actually have experienced an AJAX-based solution already. AJAX, which stands for asynchronous JavaScript and XML, is a conglomerate technology that enables dynamic, asynchronous behavior on Web pages without the need for annoying browser page refreshes. Utilizing AJAX, users can interact with Web pages almost as they would with rich clients.

AJAX is a simple technology that all the major browsers already support. As you will see shortly, the only prerequisite for AJAX implementation is knowledge of JavaScript.

How AJAX Works

If you’ve used the Gmail Web client or Google Maps you probably noticed that you can scroll over the map or spell check the typed text, respectively, without page submits. AJAX, the technology behind this behavior, handles the requested operations in _JavaScript and asynchronously invokes the server-side operations that provide the desired results.

Introducing the XMLHttpRequest

At the core of AJAX technology is a JavaScript object: XMLHttpRequest. This object has been supplied through browser implementations?first through Internet Explorer, and then through Mozilla/Safari. At the time of writing this article, version 8 of the Opera browser supplied a compatible implementation. However, Opera has had a somewhat rocky history in terms of the stability of its XMLHttpRequest implementation.

AJAX in Action

In order to demonstrate AJAX, this tutorial implements a common portal scenario: e-mail message previewing. (Click here for the application source code.) Most Web portals allow portal users to preview the contents of their e-mail inboxes from the main page. In order to view the body text in their messages, however, users need to click on the individual messages?one by one, refreshing the page each time. This case study demonstrates how to practically accomplish richer Web client behavior, similar to what rich clients like Outlook Express and Mozilla Thunderbird provide, utilizing the existing Web technologies of AJAX.

It builds a portlet that provides not only access to the list of most recent messages but also previews of the messages themselves?all from the main page without needing to refresh.

In order to access message content, you need a server component that provides access to the messages. This demonstration utilizes a trivial servlet that will serve as a simulator, providing a comma-separated representation of the messages: from, subject, date, and message body:

@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {				if ( req.getParameter( "message_id" ).equals( "1" ) ){						resp.getWriter().println( "John Doe,Greetings,10-10-2005,Hi.I am doing good" );					}else if ( req.getParameter( "message_id" ).equals( "2" ) ){						resp.getWriter().println( "Joanna Doe,Hi,10-10-2005,Document is complete." );					}else if ( req.getParameter( "message_id" ).equals( "3" ) ){						resp.getWriter().println( "Joanna Doe,Hi,10-10-2005,Meeting is at 3." );			...		}else{						resp.getWriter().println( ",NA ,NA ,NA ,Nothing to display" );					}//end else	}//end service

Your portal will have a mail preview portal window/portlet with a simplistic inbox listing on the left side and the preview pane on the right side. As you mouse over the message on the left, the preview pane makes the server call and displays the message text?in real time?utilizing AJAX.

Step 1: Creating Web Mail Preview Portlet
 
Figure 1. Web Page That Simulates a Typical Web Mail Portlet

To begin, create the Web page that simulates the look and feel of a typical Web mail portlet and incorporates JavaScript onMouseOver events that trigger AJAX calls (see Figure 1).

In this case, “onMouseOver” events are attached to table fields (TD) that contain names of the e-mail senders. This choice of data fields and the triggering events for AJAX calls are strictly for illustrative purposes:

       
"inbox"> "previewTable"> "tableHeader"> "even"> "even"> ...
From Subject
"displayMessageBody(1)">John Doe Greetings
"displayMessageBody(2)">Joanna Doe Status of the report
"displayMessageBody(3)">Jim Doe Meeting is today
"preview"> "messageBody"class="message" type="textarea" READONLY value=""/>

Notice that the input field “messageBody” is the one that will be populated by the method displayMessageBody, which takes the message ID as a parameter. An AJAX call will use this parameter to request the message details from the server. (Complete source for this application is available for download. Please see resources)

Step 2: Making an AJAX Call

The key element of this implementation is an AJAX call. In the following code, notice how different browser implementations require different instantiation methods for the XMLHttpRequest object:

function getHTTPRequestObject() {  var xmlHttpRequest;  /*@cc_on  @if (@_jscript_version >= 5)    try {      xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");    } catch (exception1) {      try {        xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");      } catch (exception2) {        xmlhttp = false;      }    }  @else  xmlhttpRequest = false;  @end @*/   if (!xmlHttpRequest && typeof XMLHttpRequest != 'undefined') {    try {      xmlHttpRequest = new XMLHttpRequest();    } catch (exception) {      xmlHttpRequest = false;    }  }  return xmlHttpRequest;}var httpRequester = getHTTPRequestObject(); // Create the xml http object on the page load

This code utilizes Internet Explorer annotations to instantiate an AJAX object. Other browsers executing this script will simply ignore the annotated sections of the getHTTPRequestObject() function. Keep in mind that your browser must support JavaScript 1.5 and above.

Step 3: Asynchronous Loading of the Content

This step implements the asynchronous invocation of the Web resources. The following code illustrates the exact steps required for the asynchronous loading of the Web resources from the JavaScript function:

var couldProcess = false;function displayMessageBody( messageID ) {  idToDisplay = messageID    if (!couldProcess && httpRequester) {    httpRequester.open("POST", serverSideURL + escape(messageID), true);    httpRequester.onreadystatechange = processResponse;    couldProcess = true;    httpRequester.send(null);	  }  }

The method displayMessageBody accepts the ID of the message to display. It specifies how the XMLHttpRequest object should access the URL by passing the following three parameters:

  • The method POST or GET
  • The URL, plus any escaped parameters (In this case, you pass only an ID. To specify multi-parameter URLs, use the standard URL query string notations and always escape.)
  • A Boolean flag indicating whether the call should be executed in an asynchronous fashion

The method also sets the content-processing method processResponse as a callback, which is invoked when the content from the URL loads.

Step 4: Processing the Results

The previously mentioned method processResponse is invoked as a callback. It takes the output from the XMLHttpRequest object, parses it, and assigns it to the page object(s):

function processResponse() {  if ( httpRequester.readyState == COMPLETE ) {//this is a locally declared constant, its                                                 // value is 4       if ( httpRequester.responseText.indexOf('invalid') == -1 ) {      	  var values = httpRequester.responseText.split(","); // parse the server response   	  document.getElementById('messageBody').value = values[3];//pick the fourth value                                                                    // and actual message       	           couldProcess = false;          }  }}

HttpRequester.readyState is an indicator that declares the completion of the URL code. It can take the following values:

  • 0 = uninitialized
  • 1 = loading
  • 2 = loaded
  • 3 = interactive
  • 4 = complete (This demo focuses on this state.)
  • Notice that the response is accessed as textual content. XMLHttpRequest can easily retrieve non-XML text, as well as XML content.

    If you needed to retrieve XML content, the line would read responseXML and you would access it as XML DOM object. This versatility of text formats is welcome news because XML could be overkill for simple data retrieval scenarios like the one described here.

    Step 5: Improving the Robustness of the AJAX Application

    Any extensive use of JavaScript inevitably raises concerns about the robustness and reliability of an application that heavily relies on this very relaxed and forgiving scripting language. With AJAX, the issue is even more complicated. AJAX makes remote calls, which introduce an additional dimension of complexity and the opportunity for errors?especially considering that built-in support for server-side error conditions is very limited.

    With all this in mind, here are some immediate error-prevention suggestions:

    • Make sure that your application can function in a bare bones mode, even without the AJAX.
    • Verify response codes from the AJAX calls before the further processing of the results.XMLHttpRequest API supports HTTP codes (200, 400, …). These can be accessed via the status property (along with the statusText property, which holds the message associated with the status of the response):
      if ( httpRequester.readyState == 4) {// if the status is 200 (OK) proceedif ( httpRequester.status == 200) {// ... process results ...} else {// ... handle or report error here ...}

    AJAX Implementation: An Art of Tradeoffs

    Many programmers consider JavaScript a sub-optimal programming solution because of its lacking debugging methods and its error-prone, weak-typed programming model. With this in mind, it is fair to say that AJAX is a solution of trade-offs. You trade the safety of the more robust languages like Java or C# for the presentational attractiveness and the innovative appeal of this JavaScript-based technology.

    Hopefully, the popularity of AJAX and the increasing use of JavaScript will prompt browser producers to further innovate the JavaScript objects and incorporate mechanisms that make JavaScript objects a bit more compatible, safer to use, and easier to debug.

    In the meantime, I see AJAX as an immediate candidate for the new generation of Internet portals and interactive applications. With AJAX, Internet news portals such as Yahoo, Google News, or MSN will allow users to access all areas of interest?including specific details?from the same portal page.

    The promise of rich clients that can be implemented by leveraging existing Web technologies and Internet infrastructure as-is is attractive. Interactive communication applications already have adopted AJAX?Google uses it for its ultra-popular Gmail e-mail client?and I expect this trend to continue.

    One advantage that software development teams will enjoy is this technology’s accessibility and flat learning curve. As previously mentioned, it is available on all modern browsers. Also, it does not require advanced programming skills like J2EE or .NET, yet it can produce impressive and effective results that will appeal to end users.

    Helpful Tools and Extensions

    As AJAX grows in popularity, helpful third-party extensions will continue to emerge?ones that make complex tasks such as debugging, cross-browser development, and XML processing easier. Some of the more prominent extensions that you may find helpful today are:

    • Greasemonkey
      Greasemonkey is a Firefox extension that enables installation of custom DHTML scripts. Some blog authors (see resources) have produced scripts that help trace and debug AJAX routines utilizing Greasemonkey features.
    • Sarrisa
      Sarrisa is a script library that automates and simplifies the most common XML operations (e.g., XML document loading from URL, instantiations, XPath, XSLT processing) with AJAX, as well as cross-browser implementations and testing.
    • Direct Web Remoting (DWR)
      DWR is an AJAX-based Java remoting library that enables asynchronous remote invocation of Java server code from the JavaScript routines.
    devx-admin

    devx-admin

    Share the Post:
    Apple Tech

    Apple’s Search Engine Disruptor Brewing?

    As the fourth quarter of 2023 kicks off, the technology sphere is abuzz with assorted news and advancements. Global stocks exhibit mixed results, whereas cryptocurrency

    Revolutionary Job Market

    AI is Reshaping the Tech Job Market

    The tech industry is facing significant layoffs in 2023, with over 224,503 workers in the U.S losing their jobs. However, experts maintain that job security

    Foreign Relations

    US-China Trade War: Who’s Winning?

    The August 2023 visit of Gina Raimondo, the U.S. Secretary of Commerce, to China demonstrated the progress being made in dialogue between the two nations.

    Pandemic Recovery

    Conquering Pandemic Supply Chain Struggles

    The worldwide coronavirus pandemic has underscored supply chain challenges that resulted in billions of dollars in losses for automakers in 2021. Consequently, several firms are

    Game Changer

    How ChatGPT is Changing the Game

    The AI-powered tool ChatGPT has taken the computing world by storm, receiving high praise from experts like Brex design lead, Pietro Schirano. Developed by OpenAI,

    Apple Tech

    Apple’s Search Engine Disruptor Brewing?

    As the fourth quarter of 2023 kicks off, the technology sphere is abuzz with assorted news and advancements. Global stocks exhibit mixed results, whereas cryptocurrency tokens have seen a substantial

    GlobalFoundries Titan

    GlobalFoundries: Semiconductor Industry Titan

    GlobalFoundries, a company that might not be a household name but has managed to make enormous strides in its relatively short 14-year history. As the third-largest semiconductor foundry in the

    Revolutionary Job Market

    AI is Reshaping the Tech Job Market

    The tech industry is facing significant layoffs in 2023, with over 224,503 workers in the U.S losing their jobs. However, experts maintain that job security in the sector remains strong.

    Foreign Relations

    US-China Trade War: Who’s Winning?

    The August 2023 visit of Gina Raimondo, the U.S. Secretary of Commerce, to China demonstrated the progress being made in dialogue between the two nations. However, the United States’ stance

    Pandemic Recovery

    Conquering Pandemic Supply Chain Struggles

    The worldwide coronavirus pandemic has underscored supply chain challenges that resulted in billions of dollars in losses for automakers in 2021. Consequently, several firms are now contemplating constructing domestic manufacturing

    Game Changer

    How ChatGPT is Changing the Game

    The AI-powered tool ChatGPT has taken the computing world by storm, receiving high praise from experts like Brex design lead, Pietro Schirano. Developed by OpenAI, ChatGPT is known for its

    Future of Cybersecurity

    Cybersecurity Battles: Lapsus$ Era Unfolds

    In 2023, the cybersecurity field faces significant challenges due to the continuous transformation of threats and the increasing abilities of hackers. A prime example of this is the group of

    Apple's AI Future

    Inside Apple’s AI Expansion Plans

    Rather than following the widespread pattern of job cuts in the tech sector, Apple’s CEO Tim Cook disclosed plans to increase the company’s UK workforce. The main area of focus

    AI Finance

    AI Stocks to Watch

    As investor interest in artificial intelligence (AI) grows, many companies are highlighting their AI product plans. However, discovering AI stocks that already generate revenue from generative AI, such as OpenAI,

    Web App Security

    Web Application Supply Chain Security

    Today’s web applications depend on a wide array of third-party components and open-source tools to function effectively. This reliance on external resources poses significant security risks, as malicious actors can

    Thrilling Battle

    Thrilling Battle: Germany Versus Huawei

    The German interior ministry has put forward suggestions that would oblige telecommunications operators to decrease their reliance on equipment manufactured by Chinese firms Huawei and ZTE. This development comes after

    iPhone 15 Unveiling

    The iPhone 15’s Secrets and Surprises

    As we dive into the most frequently asked questions and intriguing features, let us reiterate that the iPhone 15 brings substantial advancements in technology and design compared to its predecessors.

    Chip Overcoming

    iPhone 15 Pro Max: Overcoming Chip Setbacks

    Apple recently faced a significant challenge in the development of a key component for its latest iPhone series, the iPhone 15 Pro Max, which was unveiled just a week ago.

    Performance Camera

    iPhone 15: Performance, Camera, Battery

    Apple’s highly anticipated iPhone 15 has finally hit the market, sending ripples of excitement across the tech industry. For those considering upgrading to this new model, three essential features come

    Battery Breakthrough

    Electric Vehicle Battery Breakthrough

    The prices of lithium-ion batteries have seen a considerable reduction, with the cost per kilowatt-hour dipping under $100 for the first occasion in two years, as reported by energy analytics

    Economy Act Soars

    Virginia’s Clean Economy Act Soars Ahead

    Virginia has made significant strides towards achieving its short-term carbon-free objectives as outlined in the Clean Economy Act of 2020. Currently, about 44,000 megawatts (MW) of wind, solar, and energy

    Renewable Storage Innovation

    Innovative Energy Storage Solutions

    The Department of Energy recently revealed a significant investment of $325 million in advanced battery technologies to store excess renewable energy produced by solar and wind sources. This funding will

    Renesas Tech Revolution

    Revolutionizing India’s Tech Sector with Renesas

    Tushar Sharma, a semiconductor engineer at Renesas Electronics, met with Indian Prime Minister Narendra Modi to discuss the company’s support for India’s “Make in India” initiative. This initiative focuses on

    Development Project

    Thrilling East Windsor Mixed-Use Development

    Real estate developer James Cormier, in collaboration with a partnership, has purchased 137 acres of land in Connecticut for $1.15 million with the intention of constructing residential and commercial buildings.

    USA Companies

    Top Software Development Companies in USA

    Navigating the tech landscape to find the right partner is crucial yet challenging. This article offers a comparative glimpse into the top software development companies in the USA. Through a

    Software Development

    Top Software Development Companies

    Looking for the best in software development? Our list of Top Software Development Companies is your gateway to finding the right tech partner. Dive in and explore the leaders in

    India Web Development

    Top Web Development Companies in India

    In the digital race, the right web development partner is your winning edge. Dive into our curated list of top web development companies in India, and kickstart your journey to

    USA Web Development

    Top Web Development Companies in USA

    Looking for the best web development companies in the USA? We’ve got you covered! Check out our top 10 picks to find the right partner for your online project. Your

    Clean Energy Adoption

    Inside Michigan’s Clean Energy Revolution

    Democratic state legislators in Michigan continue to discuss and debate clean energy legislation in the hopes of establishing a comprehensive clean energy strategy for the state. A Senate committee meeting

    Chips Act Revolution

    European Chips Act: What is it?

    In response to the intensifying worldwide technology competition, Europe has unveiled the long-awaited European Chips Act. This daring legislative proposal aims to fortify Europe’s semiconductor supply chain and enhance its