Skip navigation

Harald Markus Wirth


Page Content:

JS Code Snippet: Ajax Request

Download: /howto/webdesign/templates/ajaxrequest.js

//AjaxRequest.js

function AjaxRequest( new_url, new_onreceive )
{
   var self = this;
   this.url = new_url;

   this.onreceive;
   if (new_onreceive) {
      this.onreceive = new_onreceive;
   }

   var http = get_http_object();
   function get_http_object() {
      var http_obj;

      // Special IE only code
      /*@cc_on
      @if (@_jscript_version >= 5)
         try { http_obj = new ActiveXObject("Msxml2.XMLHTTP"); }
         catch (e)
         {  try { http_obj = new ActiveXObject("Microsoft.XMLHTTP"); }
            catch { (E) xmlhttp = false; }
         }
      @else
         http_obj = false;
      @end @*/

      // Every other browser on the planet
      if (!http_obj && typeof XMLHttpRequest != 'undefined') {
         try { http_obj = new XMLHttpRequest(); }
         catch (e) { http_obj = false; }
      }
      return http_obj;
   }


   // Request response
   this.poll = function() {
      http.open( 'GET', self.url, true );
      http.onreadystatechange = self.receive;
      http.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
      http.send( null );
   }

   // Process response
   this.receive = function() {
      if (http.readyState != 4) {
/*
0: request not initialized
1: server connection established
2: request received
3: processing request
4: request finished and response is ready
*/       return;
      } // readyState

      if (self.onreceive) {        // Is there a user defined onreceive method?
         do_eval = self.onreceive( http );
      } else {
         do_eval = true;
      }

     if (do_eval) {
        eval( http.responseText );
     }
      
   } // receive
   
   // Constructor
   if (new_onreceive == undefined) {
      self.poll();
   }
   
} // AjaxRequest();

/* Example usage */
new AjaxRequest( 'target.php', function(http) {
	alert( http.responseText );
}).poll();


Content Management:

μCMS α1.6