Print

Print


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