XMLHttpRequest with Java
Saturday, March 19, 2005
Everyone and their dogs are talking or writing about XMLHttpRequest.
I'm jumping in, together with my dog, to write about it and to say how cool it is. I've also developed a little application that uses XMLHttpRequest with Java.
But, that is not all. Since google is the new "new thing," I decided to use their 3 (or so) year old google API to embed searching capabilities to my little demo.The Application
The application allows you to search google on the fly, via XMLHttpRequest.
Imagine, if you will, a blog entry form: this form is smart enough to perform an asynchornous google search of the title of your entry, as you finish typing in the value.
It looks like this:The Source Code
All the code:
This is the Servlet receiving the request - Nothing special about this class - It's your typical Java Servlet implementing doGet().
This is a helper class - I abstracted this functionality out of the Servlet so I can reuse it. I.e. A Swing Application - BTW, you'll need to get your own key from google, if you want to run it on your own machine.
This is your typical VO bean - I use it so that I don't couple the google API code with the Servlet.
I had to take down the live version, but, I will try to put it up again.The Application that I really want to write
I want to write an application that understands the "context" of my sentences as I'm typing my entry.
Why would anyone want to do that?
Think of it as a "smart" blog. I.e. As I type a blog entry, a "context" engine would be parsing my sentences and performing searches in the background.
When I'm done with my entry and click the "save" button, my entry and the search results are saved. My blog entry now has the top search results of whatever people are writing around the web about the theme(s) of my blog entry.
It sounds like a trivial problem, however, writing a "context" analyzer is not an easy task - If I had a context analyzer, I'd probably be licensing it right now :)A pseudo product I'm working on (When time permits)
Another neat use I can think for this type of technology - no, not maps :) - is a type of web database updater.
For example, imagine using a web timesheet system (my product would be an extension to any system): whenever you are entering your daily (or weekly, or monthly) entries, you'd like everything related to a particular project to be updated in the background. Mmmhhh...GDS SDK
Doesn't work with Firefox?
I've tried the Tab button, Enter, etc.
I only tested it with IE 6 - I'll try to make it work with FireFox.
Thanks for the heads up. And I did think of that, but had to go to the movies: "Million Dollar Babie" - Not a bad flick.
I'll see if I can come up with the FireFox code.
Imagine coding and testing maps.google.com. Of course, they have millions of R&D cash and quite a few good developers on hand :)
Ok, I think I fixed it.
The culprit was this line:
var searchQuery = document.getElementById(formElement).value;
formElement was a parameter passed into a function with the "name" of the form element. However, in FireFox this doesn't work.
I had to change it to:
var searchQuery = document.forms.elements[formElement].value;
formElement is now the index of the form element.
It now seems to work in IE 6 and FireFox 1.0.1.
Hi, you could have fixed it just by adding an id attribute to your html elements that you need to retrieve with getElementById.
IE searches by name AND id, Firefox searches by id. See the name of the method to guess who's right ;-)