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
>
|