// nthist_ajax.js
// nice wrapper for ajax queries
// example: new nthist_ajax( { url:your.cgi, callback: function_expecting_string_as_arg, params: [ [ p1, v1 ], [ p2, v2 ], [ p3, v3 ] ] } );
function nthist_ajax( request ) {
// check request object provided, MUST have url
if( ! request || ! request.hasOwnProperty( 'url' )) { return; }
var req;
try {
req = new XMLHttpRequest();
} catch (e1) {
try {
req = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e2) {
try {
req = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e3) {
return;
}
}
}
var params = "";
if( request.hasOwnProperty( 'params' )) {
for( var k = 0; k < request.params.length; k++ ) {
params += "&" + request.params[k][0] + "=" + encodeURIComponent( request.params[k][1] ) ;
}
params = params.substring(1);
}
var callback = request.callback;
if( request.hasOwnProperty( 'callback' ) && callback && typeof callback === 'function' ) {
req.onreadystatechange = function() { if( req.readyState != 4 || req.status != 200 ) { return; } callback( req.responseText ); };
}
req.open("POST", request.url );
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.send( params );
}