| By Jeffry Houser | Article Rating: |
|
| February 9, 2007 06:30 PM EST | Reads: |
43,214 |
The first line initializes the request variable, giving it a Boolean value of false. You can check against this later to make sure that your request object was properly initialized. The next code creates an instance of the XMLHttpRequest object using 'new XMLHttpRequest.' This works fine for most non-Microsoft browsers, but won't work in IE. If it doesn't initialize, then an error is thrown, which is where the first catch statement comes into play. It attempts to re-initialize using the method available in the current version of Internet Explorer: new ActiveXObject("Msxml2.XMLHTTP").
If that fails, it tries the version from older versions of Internet Explorer new ActiveXObject("Microsoft.XMLHTTP"). That's kind of complicated right? I borrowed this initialization code from the article www-128.ibm.com/developerworks/Web/library/ wa-ajaxintro2/?ca=dgr-lnxw07AJAX-Request (which you should all read because it goes into a lot more details about error checking that are outside the scope of this article).
So, now the code has created the object, but what can you do with it? As you can probably see, it doesn't do much yet. You want to assign it a URL, load the data, and then process the data in some way. This function will do that:
function getRSS() {
var url = "/htdocs/jeffhousercom/wwwroot/rss.cfm";
request.open("GET", url, true);
request.onreadystatechange = updatePage;
request.send(null);
}
This is function to grab an RSS feed. The first line defines the URL. This is standard JavaScript for defining a variable. You should bear in mind that you can only request URLs from the current Web site. In this case, I'm grabbing a RSS feed from a local copy of my blog. The next line calls a method on the request object entitled open. Open prepares the request to be sent, but doesn't actual send it. There are five arguments to the open function (although we only use three in this example):
- Request-type: This specifies the request type, either get or post, for the URL that you want to send.
- url: The URL specifies the URL that you're getting (or posting) to.
- Asynchronous: The async value is a Boolean value that specifies whether this request is asynchronous or not. For AJAX use, you'll want to specify true. If set to false, the application will hold until this request is finished, which defeats the purpose of an RIA in the first place.
- username: The username specifies the username required for accessing the URL, if applicable.
- password: The username specifies the username required for accessing the URL, if applicable.
Once the request complete, the updatePage function will execute, so lets look at that next:
function updatePage() {
if (request.readyState == 4){
Form1.XMLValues.value = request.responseText;
}
}
This function first checks the readyState of the XMLHttpRequest object. Exploring that is beyond the scope of this article, but there are a lot more details in some of the references provided at the end. For now, all you need to know is that if the readyState is 4, then the request is complete. This takes the resulting value from the server response and assigns it to a form textbox. The form is below:
<form name="Form1">
<textarea name="XMLValues" rows="20" cols="50"></textarea>
</form>
The text box will contain the XML from the RSS feed. There's another property associated with the XMLHttpRequest object called responseXML. This will contain the results as an XML Document object, which JavaScript can access natively. Unfortunately specific details are beyond the scope of this article, but I found this good resource to get you started on that: www.peachpit.com/articles/article.asp?p=29307&seqNum=4&rl=1.
Where To Go from Here
If you want to learn more about AJAX, there are some great resources you can read. The article by Jesse James Garrett that started it all is at www.adaptivepath.com/publications/essays/archives/000385.php. Garrett is credited with coining the term AJAX. You can follow an AJAX blog at http://www.ajax-powered.net, which talks about all things AJAX. Finally, there are a few people who are working on ways to integrate ColdFusion and AJAX together. One is the CFAJAX project www.indiankey.com/cfajax. Another is the AJAXCFC project at www.robgonda.com/blog/projects/ajaxcfc.
Published February 9, 2007 Reads 43,214
Copyright © 2007 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Jeffry Houser
Jeffry is a technical entrepreneur with over 10 years of making the web work for you. Lately Jeffry has been cooped up in his cave building the first in a line of easy to use interface components for Flex Developers at www.flextras.com . He has a Computer Science degree from the days before business met the Internet and owns DotComIt, an Adobe Solutions Partner specializing in Rich Internet Applications. Jeffry is an Adobe Community Expert and produces The Flex Show, a podcast that includes expert interviews and screencast tutorials. Jeffry is also co-manager of the Hartford CT Adobe User Group, author of three ColdFusion books and over 30 articles, and has spoken at various events all over the US. In his spare time he is a musician, old school adventure game aficionado, and recording engineer. He also owns a Wii. You can read his blog at www.jeffryhouser.com, check out his podcast at www.theflexshow.com or check out his company at www.dot-com-it.com.
![]() |
Jeff Houser 12/19/06 09:33:05 PM EST | |||
Christopher, I have no access to the "backend" world of sys-con; I just write and submit articles. I can re-iterate that it was written last January for the February issue of CFDJ. I can't comment on the publishing (or re-publishing) of it w/ a new date. It appears that sys-con corrected the mistake. Nor can I comment on what gets e-mailed to subscribers and when. None of that is anything I am involved with. You are right that there is no ColdFusion in the article, and as such the title is misleading. It's probably something I should have caught and corrected in the proof-read. But, I'm not perfect so you'll have to accept my apology for that. A lot of articles for my column (which is a beginner's column) have no direct relation to CF, but rather deal with topics that affect ColdFusion developers. This article was written for an issue with an editorial focus on AJAX. Even though it was not CF-specific, I still consider the topic relevant to CF Developers. I'm sorry you didn't enjoy the article. |
||||
![]() |
Christopher Jordan 12/19/06 06:45:33 PM EST | |||
Jeff, Try typing "Dissecting ColdFusion and AJAX" into Google and then looking at the cached page. You'll see what I saw before you (or your editor) corrected their mistake. The article says it published Nov. 1, 2006. Nice try. If your intent was to write an article that guided the user through the mechanics of AJAX, then don't title your article "Dissecting ColdFusion and AJAX". The title is extreemly misleading. You said very, very little about ColdFusion or how it plays with Ajax. Your RSS Feed example seemed to have nothing to do with ColdFusion (this is the ColdFusion Developer's Journal, right?) A let down of an article to be sure. Perhaps you guys ought to have a system indicating the level at which you will be addressing topics. Beginner, intermediate, advanced. Also, as I asked your duty editor before, who's bright idea was it to hit people's inbox with old information? Running out of things to write about that are new? "Hey, brand new for you! An article we dug up from six months ago! :)" I thought I subscribed to this publication in order to get new, cutting edge information concerning ColdFusion. Not so I could read articles that are months old. Sure, the information in this particular article isn't really "outdated", but it's close neighbors with worthless. I don't know a single soul who codes ajax without using some javaScript library like Dojo, Prototype, or jQuery. You want to do an article on something new, fresh and bleeding edge? Write an article on jQuery. I'm done. |
||||
![]() |
Jeff Houser 12/19/06 06:01:45 PM EST | |||
Christopher, The article was written for the February issue of CFDJ, my initial draft is dated from 11 months ago. As the duty editor pointed out, the article has been on the site since May 2006, I'm not sure why you think it was posted in November. That said, I think its important to understand the mechanics behind "AJAX" and that was the focus of the article. Yes, there are plenty of frameworks and script libraries as you mentioned, but if I had to write another beginner's article on the subject, I'd concentrate again on underlying mechanics of AJAX, not on the frameworks. |
||||
![]() |
Duty Editor 12/19/06 03:39:13 PM EST | |||
Christopher, Thanks for the feedback. This article was chosen as part of a "Best of 2006" program, in which we wished to recognize those writers whose work was enjoyed in the course of '06 by our readers. 18,607 people have enjoyed this article since it was first published on March 8, 2006. Sorry for any misunderstanding. For up-to-the-minute coverage of AJAX, you no doubt are aware of AJAXWorld Magazine, http://ajax.sys-con.com, which is updated daily - sometimes hourly. Duty Editor |
||||
![]() |
Christopher Jordan 12/19/06 02:53:54 PM EST | |||
Where the hell have you been? Under a rock? The first page of your article made you seem so completely out of touch that I didn't even want to read the second page. I realize this article was published on Nov. 01 of this year, but dude, c'mon, there were heaps of things happening last month to help ease writing ajax and javascript. YUI? Dojo? Prototype? ... and my favorite: jQuery! Gimme a break. Why am I just now (Dec. 19, 2006) getting an email about an article written over a month ago? Get on the ball guys... or get left behind |
||||
![]() |
CFDJ News Desk 10/30/06 04:45:44 PM EST | |||
One of the most annoying things about the Web page paradigm is that you have to reload the page whenever you want to do something on the server side. If you want to do a site search, it's sprinkled across two pages. |
||||
![]() |
SYS-CON Brazil News Desk 10/30/06 08:25:51 AM EST | |||
One of the most annoying things about the Web page paradigm is that you have to reload the page whenever you want to do something on the server side. If you want to do a site search, it's sprinkled across two pages. |
||||
![]() |
SYS-CON India News Desk 10/30/06 06:41:06 AM EST | |||
One of the most annoying things about the Web page paradigm is that you have to reload the page whenever you want to do something on the server side. If you want to do a site search, it's sprinkled across two pages. |
||||
![]() |
CFDJ News Desk 10/29/06 10:00:50 PM EST | |||
One of the most annoying things about the Web page paradigm is that you have to reload the page whenever you want to do something on the server side. If you want to do a site search, it's sprinkled across two pages. |
||||
![]() |
j j 09/27/06 11:40:08 AM EDT | |||
One of the most annoying things about the Web page paradigm is that you have to reload the page whenever you want to do something on the server side. If you want to do a site search, it's sprinkled across two pages. |
||||
![]() |
SYS-CON Italy News Desk 09/25/06 07:53:54 PM EDT | |||
One of the most annoying things about the Web page paradigm is that you have to reload the page whenever you want to do something on the server side. If you want to do a site search, it's sprinkled across two pages. |
||||
![]() |
CFDJ News Desk 09/25/06 03:34:25 PM EDT | |||
One of the most annoying things about the Web page paradigm is that you have to reload the page whenever you want to do something on the server side. If you want to do a site search, it's sprinkled across two pages. |
||||
![]() |
AJAXWorld News Desk 09/25/06 09:07:48 AM EDT | |||
One of the most annoying things about the Web page paradigm is that you have to reload the page whenever you want to do something on the server side. If you want to do a site search, it's sprinkled across two pages. |
||||
![]() |
SYS-CON Belgium News Desk 04/21/06 11:09:01 AM EDT | |||
One of the most annoying things about the Web page paradigm is that you have to reload the page whenever you want to do something on the server side. If you want to do a site search, it's sprinkled across two pages. |
||||
![]() |
SYS-CON Italy News Desk 04/20/06 06:57:22 PM EDT | |||
One of the most annoying things about the Web page paradigm is that you have to reload the page whenever you want to do something on the server side. If you want to do a site search, it's sprinkled across two pages. |
||||
![]() |
John Dobson 04/20/06 06:24:18 PM EDT | |||
A very helpful article. It might be useful to add that the getRSS() function must actually be invoked somewhere, for example in the onLoad attribute of the BODY tag. In the online edition of the article, there is a closing curly brace missing at the end of the first block of JavaScript. |
||||
- Kindle 2 vs Nook
- Cloud Computing on Gartner's Top 10 List and SYS-CON Events' 2010 Calendar
- Confessions of a Ulitzer Addict
- IBM Hardware Chief, Intel VC Exec Arrested in Insider Trading Scam
- Tactical Cloud Computing Panel at 1st Annual GovIT Expo
- Ulitzer.com Named Exclusive "New Media" Sponsor of Cloud Computing Conference & Expo
- Moving Your RIA Apps into the Cloud: Seven Challenges
- Adobe’s Aiming ColdFusion at Multiple Clouds
- Windows 7 – Microsoft’s First Step to the Cloud
- Ulitzer Provides a Powerful Social Journalism Platform
- Jill Tummler Singer, Deputy CIO of CIA, Keynotes at GovIT Expo
- Open Source Mobile Cloud Sync and Push Email
- Kindle 2 vs Nook
- The Difference Between Web Hosting and Cloud Computing
- Cloud Computing on Gartner's Top 10 List and SYS-CON Events' 2010 Calendar
- Ajax in RichFaces 3.3, JSF 2 and RichFaces 4
- Confessions of a Ulitzer Addict
- IBM Hardware Chief, Intel VC Exec Arrested in Insider Trading Scam
- My Thoughts on Ulitzer
- Tactical Cloud Computing Panel at 1st Annual GovIT Expo
- Ulitzer.com Named Exclusive "New Media" Sponsor of Cloud Computing Conference & Expo
- US Post Office Hops a Ride on NetSuite’s Cloud
- Moving Your RIA Apps into the Cloud: Seven Challenges
- Adobe’s Aiming ColdFusion at Multiple Clouds
- Building a Drag-and-Drop Shopping Cart with AJAX
- What Is AJAX?
- Google Maps! AJAX-Style Web Development Using ASP.NET
- Flashback to January 2006: Exclusive SYS-CON.TV Interviews on "OpenAjax Alliance" Announcement
- AJAXWorld Conference & Expo to Take Place October 2-4, 2006, at the Santa Clara Convention Center, California
- AJAX Sponsor Webcasts Are Now Available at AJAXWorld Website
- How and Why AJAX, Not Java, Became the Favored Technology for Rich Internet Applications
- "Real-World AJAX" One-Day Seminar Arrives in Silicon Valley
- AJAXWorld University Announces AJAX Developer Bootcamp
- AJAX Support In JadeLiquid WebRenderer v3.1
- Where Are RIA Technologies Headed in 2008?
- Struts Validations Framework Using AJAX






































