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

Reply via email to