Skip to content

Instantly share code, notes, and snippets.

@saml
Created September 18, 2015 17:01
Show Gist options
  • Save saml/d7d4a7df304d94f38cab to your computer and use it in GitHub Desktop.
Save saml/d7d4a7df304d94f38cab to your computer and use it in GitHub Desktop.
var $aml = (function() {
var me = {
ajax: AJAX()
};
function formURLEncode(args) {
var keyVals = [];
for (var key in args) {
if (args.hasOwnProperty(key)) {
keyVals.push(encodeURIComponent(key) + '=' + encodeURIComponent(args[key]));
}
}
return keyVals.join('&');
}
function AJAX() {
var me = {
method: 'GET',
url: null,
params: null,
data: null
};
var exported = {
method: setMethod,
url: setURL,
params: setParams,
data: setData,
exec: exec
};
function setMethod(method) {
me.method = method;
return exported;
}
function setURL(url) {
me.url = url;
return exported;
}
function setParams(params) {
me.params = params;
return exported;
}
function setData(data) {
me.data = data;
return exported;
}
function exec() {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.onload = function() {
if (xhr.status >= 200 && xhr.status <= 299) {
resolve(xhr.response);
} else {
reject(xhr.statusText);
}
};
xhr.onerror = function() {
reject(xhr.statusText);
};
var uri = me.url;
if (me.params) {
var encoded = formURLEncode(me.params);
var sep = '?';
if (uri.indexOf('?') >= 0) {
sep = '&';
}
uri += (sep + encoded);
}
xhr.open(me.method, uri);
xhr.send(me.data);
});
}
return exported;
}
return me;
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment