Just a continuation of the last post.
This XMLHttpRequest implementation straightens things out a bit. And, yes, I am well aware that there are better ways to do null checking. But if I did everything for you, you’d never have to learn anything for yourself…
function isObject(obj)
{
var bIsObject = false;
if( obj )
{
bIsObject = ( typeof obj=='object' );
}
return bIsObject;
}
function getObjectProperty( obj, strPropName )
{
var prop = null;
if( isObject(obj) && strPropName )
{
if( obj.hasOwnProperty(strPropName) )
{
prop = obj[strPropName];
}
}
return prop;
}
function doHttpRequest( strUrl, objParams )
{
var xmlhttp = null;
try
{
// for all modern browsers
xmlhttp = new XMLHttpRequest();
}
catch(e1)
{
try
{
// for IE5 and IE6
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e2)
{
alert("XMLHttpRequest object could not be created...");
}
}
if( !xmlhttp )
{
alert("XMLHttpRequest object could not be created...");
}
else
{
var objRequestData = getObjectProperty(objParams, 'objRequestData');
var bDoPost = getObjectProperty(objParams, 'bDoPost');
var funcCallback = getObjectProperty(objParams, 'funcCallback');
var objCallbackParams = getObjectProperty(objParams, 'objCallbackParams');
if( !strUrl )
{
alert('URL cannot be blank...');
}
else
{
var strRequestData = '';
if( objRequestData )
{
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
{
if(!objCallbackParams)
{
objCallbackParams = { 'xmlhttp':xmlhttp };
}
else
{
objCallbackParams.xmlhttp = xmlhttp;
}
if( funcCallback )
{
funcCallback(objCallbackParams);
}
else
{
alert('http request done...');
}
}
}
}
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);
}
}
}
}