XMLHttpRequest


I hate the term “ajax” and I mostly refuse to use it… So I will refrain here.

The following javascript provides the basic/core functionality for all modern web applications: the asynchronous HTTP request.

function doHttpRequest( strUrl, objRequestData, bDoPost, callback )
{
  var xmlhttp = new XMLHttpRequest();
  
  if(!xmlhttp)
  {
    alert('Your browser is too old... Sorry.');
  }
  else
  {
    var strRequestData = "";
    for( var strKey in objRequestData )
    {
      var strValue = objRequestData[strKey];
      
      if( strRequestData.length>0 )
      {
        strRequest += "&";
      }
      
      strRequestData += encodeURIComponent(strKey) + "=" + encodeURIComponent(strValue);
    }
    
    xmlhttp.onreadystatechange = function()
    {
      if(xmlhttp.readyState == 4)
      {
        if( xmlhttp.status!=200 )
        {
          alert("Error in HTTP Request...\n\nStatus: "+xmlhttp.status+"\n"+xmlhttp.statusText);
        }
        else
        {
          var cbParams = { 'xmlhttp':xmlhttp };
          callback(cbParams);
        }
      }
    }
    
    if( bDoPost )
    {
      xmlhttp.open("POST", strUrl, true);
      xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xmlhttp.send(strRequestData);
    }
    else
    {
      xmlhttp.open("GET", strUrl+"?"+strRequestData, true);
      xmlhttp.send(null);
    }
  }
}

Anyway, that’s all mostly for my benefit. I usually end up having to write that stupid function from scratch once or twice a month…

You also may ask “why would you bother with the nuts-and-bolts like this when you could use some existing javascript library/framework?”. Well, there are people who use frameworks … and then there are the people who write the frameworks. There’s a lot more job security in the latter :)


Leave a Reply