ajax.js
Summary
AjaxRequest is a JavaScript class designed to make dealing
with XMLHttpRequests (or the IE versions thereof) simplier.
Example usage:
<input type="text" name="foo" onchange="update();"/>
....
function update() {
var req = new AjaxRequest();
req.get(
{
'url' : "/ajax/update.action",
'onSuccess' : updateCallback,
'onLoading' : function () { throbber(true); },
'onDone' : function() { setTimeout('throbber(false);',250); }
});
}
function updateCallback(req) { // This is the required signature for a callback
if (req.responseXML) {
// process xml file in javascript
}
}
Version: 0.2
Author: Marcus R. Breese
function AjaxRequest() {
var request = new Object();
var done = false;
request.params = new Array();
request.headers = new Array();
request.onLoading = false;
request.onLoaded = false;
request.onInteractive = false;
request.onDone = false;
request.onSuccess = false;
request.onFail = false;
request.method = "GET";
request.async = true;
request.username = false;
request.password = false;
request.url = false;
request.xmlHttpRequest = AjaxRequest.getXMLHttpRequest();
if (!request.xmlHttpRequest) {
alert("Error creating XMLHttpRequest object!");
return;
}
request.xmlHttpRequest.onreadystatechange = function() {
if (request.xmlHttpRequest.readyState == 1) {
if (typeof request.onLoading == 'function' ) {
request.onLoading(request.xmlHttpRequest);
}
} else if (request.xmlHttpRequest.readyState == 2) {
if (typeof request.onLoaded == 'function' ) {
request.onLoaded(request.xmlHttpRequest);
}
} else if (request.xmlHttpRequest.readyState == 3) {
if (typeof request.onInteractive == 'function' ) {
request.onInteractive(request.xmlHttpRequest);
}
} else if (request.xmlHttpRequest.readyState == 4) {
done = true;
if (typeof request.onDone == 'function' ) {
request.onDone(request.xmlHttpRequest);
}
if (request.xmlHttpRequest.status==200) {
if (typeof request.onSuccess == 'function' ) {
request.onSuccess(request.xmlHttpRequest);
}
} else {
if (typeof request.onFail == 'function' ) {
request.onFail(request.xmlHttpRequest);
}
}
}
}
this.isDone = function() { return done; }
this.abort = function() {
if (request.xmlHttpRequest.readyState>0) {
request.xmlHttpRequest.abort();
}
}
this.get = function(p) {
this._processParameters(p);
request.method="GET";
var added = false;
for ( var p in request.params ) {
if (!added) {
request.url+="?";
added=true;
} else {
request.url+="&";
}
request.url+=encodeURIComponent(p)+"="+encodeURIComponent(request.params[p]);
}
this._send(null);
}
this.post = function(p) {
this._processParameters(p);
request.method="POST";
var queryParameters = "";
for ( var p in request.params ) {
if (queryParameters) {
queryParameters+="&";
}
queryParameters+=encodeURIComponent(p)+"="+encodeURIComponent(request.params[p]);
}
this._send(queryParameters);
}
this._send = function(queryParameters) {
if (done) {
alert("This request has already been completed!");
}
if (!request.url) {
alert("null ajax url!");
}
if (!request.username) { request.username=null; }
if (!request.password) { request.password=null; }
request.xmlHttpRequest.open(request.method, request.url, request.async, request.username,request.password);
for ( var h in request.headers ) {
request.xmlHttpRequest.setRequestHeader(h,request.headers[h]);
}
if (request.method=="POST") {
request.xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
}
request.xmlHttpRequest.send(queryParameters);
}
this._processParameters = function(params) {
for ( var p in params ) {
if (request[p] != undefined) {
request[p] = params[p];
}
}
}
}
AjaxRequest.getXMLHttpRequest = function () {
var xmlHttp = false;
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
return xmlHttp;
}
Documentation generated by
JSDoc on Thu Mar 2 20:22:37 2006