2010-06-24 07:37:02 +00:00
|
|
|
(function(){
|
|
|
|
|
|
|
|
|
|
function addParamToUrl(url, param) {
|
|
|
|
|
return url + (/\?/.test(url) ? '&' : '?') + param;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var makeXHR = (function() {
|
|
|
|
|
var factories = [
|
|
|
|
|
function() { return new ActiveXObject("Microsoft.XMLHTTP"); },
|
|
|
|
|
function() { return new ActiveXObject("Msxml2.XMLHTTP"); },
|
|
|
|
|
function() { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); },
|
|
|
|
|
function() { return new XMLHttpRequest(); }
|
|
|
|
|
];
|
|
|
|
|
for (var i = factories.length; i--; ) {
|
|
|
|
|
try {
|
|
|
|
|
var req = factories[i]();
|
|
|
|
|
if (req) {
|
|
|
|
|
return factories[i];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (err) { }
|
|
|
|
|
}
|
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
|
function emptyFn() { };
|
|
|
|
|
|
|
|
|
|
function request(url, options) {
|
|
|
|
|
|
|
|
|
|
options || (options = { });
|
|
|
|
|
|
|
|
|
|
var method = options.method ? options.method.toUpperCase() : 'GET',
|
|
|
|
|
onComplete = options.onComplete || function() { },
|
|
|
|
|
request = makeXHR(),
|
|
|
|
|
body;
|
2010-10-15 02:16:24 +00:00
|
|
|
|
|
|
|
|
/** @ignore */
|
2010-06-24 07:37:02 +00:00
|
|
|
request.onreadystatechange = function() {
|
|
|
|
|
if (request.readyState === 4) {
|
|
|
|
|
onComplete(request);
|
|
|
|
|
request.onreadystatechange = emptyFn;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (method === 'GET') {
|
|
|
|
|
body = null;
|
|
|
|
|
if (typeof options.parameters == 'string') {
|
|
|
|
|
url = addParamToUrl(url, options.parameters);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
request.open(method, url, true);
|
|
|
|
|
|
|
|
|
|
if (method === 'POST' || method === 'PUT') {
|
|
|
|
|
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
request.send(body);
|
|
|
|
|
return request;
|
|
|
|
|
};
|
|
|
|
|
|
2010-07-10 01:50:13 +00:00
|
|
|
fabric.util.request = request;
|
2010-06-24 07:37:02 +00:00
|
|
|
})();
|