One of the things that is in the new version of jPaq is simple AJAX handling. The way that I accomplished it was by using code similar to the following:
/**
* @license By Chris West - MIT Licensed
*/
(function () {
/**
* Array of functions that create XHR objects in different browsers.
* Will be re-ordered to have the first function in the array be the
* one that works for the current browser.
* @type {Array.<Function>}
* @private
*/
var xhrMakers = [
function(){ return new XMLHttpRequest(); },
function(){ return new ActiveXObject("Msxml2.XMLHTTP"); },
function(){ return new ActiveXObject("Msxml3.XMLHTTP"); },
function(){ return new ActiveXObject("Microsoft.XMLHTTP"); }
];
/**
* Attempts to synchronously pull the content from the specified URL.
* @param {string} url
* The URL of the content to pull from the same domain.
* @return {string}
* The content found at the specified URL.
*/
requestContentFrom = function (url) {
var xhr, triesLeft = xhrMakers.length;
while(0 < triesLeft--) {
try {
xhr = xhrMakers[0]();
}
catch(e) {
// Change order so the correct xhrMaker will always be first.
xhrMakers.push(xhrMakers.shift());
}
}
if(xhr) {
xhr.open('GET', url, false); // get page synchronously
xhr.send();
return xhr.responseText;
}
// Throw an error since no xhr could be created.
throw new Error('AJAX not supported.');
};
})();
The above code basically provides a function called requestContentFrom(...)
. This function takes the URL of the content that you are trying to pull and returns the content as a string. Of course, the limitation is that the request must be made to a URL from the same domain. The above code will work in any browser, including IE6+. Feel free to use and beef up the code if you want, but if you are thinking about beefing it up a lot, I would first consider looking for JavaScript libraries that already do this so as not to waste time re-inventing code. š