These days I think jquery seems more generally popular than prototype. But both are options. I definitely would use one or the other, instead of doing it myself from scratch. They take care of a lot of weird cross-browser-compatibility stuff, among other conveniences. Jonathan Jesse Prabawa wrote: > Hi Eric, > > Have you considered using a Javascript Library to handle these details? I > would recommend that you refactor your code to use one so that you can > concentrate on what you actually want to do instead. This way you can also > avoid having browser incompatabilities that are already solved if you use a > Javascript Library. Try checking out Prototype at > http://www.prototypejs.org/ > > Best regards, > > Jesse > > On Nov 29, 2007 10:21 PM, Eric Lease Morgan <[log in to unmask]> wrote: > > >> Why doesn't my httpRequest Javascript function return unless I add an >> alert? Grrr. >> >> I am writing my first AJAX-y function called add_tag. This is how it >> is suppose to work: >> >> 1. define a username >> 2. create an httpRequest object >> 3. define what it is suppose to happen when it gets a response >> 4. open a connection to the server >> 5. send the request >> >> When the response it is complete is simply echos the username. I know >> the remote CGI script works because the following URL works correctly: >> >> http://mylibrary.library.nd.edu/demos/tagging/? >> cmd=add_tag&username=fkilgour >> >> My Javascript is below, and it works IF I retain the "alert >> ( 'Grrr!' )" line. Once I take the alert out of the picture I get a >> Javascript error "xmldoc has no properties". Here's my code: >> >> >> function add_tag() { >> >> // define username >> var username = 'fkilgour'; >> >> // create an httpRequest >> var httpRequest; >> if ( window.XMLHttpRequest ) { httpRequest = new XMLHttpRequest(); } >> else if ( window.ActiveXObject ) { httpRequest = new ActiveXObject >> ( "Microsoft.XMLHTTP" ); } >> >> // give the httpRequest some characteristics and send it off >> httpRequest.onreadystatechange = function() { >> >> if ( httpRequest.readyState == 4 ) { >> >> var xmldoc = httpRequest.responseXML; >> var root_node = xmldoc.getElementsByTagName( 'root' ).item( 0 ); >> alert ( root_node.firstChild.data ); >> >> } >> >> }; >> >> httpRequest.open( 'GET', './index.cgi?cmd=add_tag&username=' + >> username, true ); >> httpRequest.send( '' ); >> alert ( 'Grrr!' ); >> >> } >> >> >> What am I doing wrong? Why do I seem to need a pause at the end of my >> add_tag function? I know the anonymous function -- function() -- is >> getting executed because I can insert other httpRequest.readyState >> checks into the function and they return. Grrr. >> >> -- >> Eric Lease Morgan >> University Libraries of Notre Dame >> >> (574) 631-8604 >> >> > > -- Jonathan Rochkind Digital Services Software Engineer The Sheridan Libraries Johns Hopkins University 410.516.8886 rochkind (at) jhu.edu