Skip to content

Instantly share code, notes, and snippets.

@moduscreate
Created October 14, 2015 14:21
Show Gist options
  • Save moduscreate/f32c34a7d42800fbc953 to your computer and use it in GitHub Desktop.
Save moduscreate/f32c34a7d42800fbc953 to your computer and use it in GitHub Desktop.
var methods = {
get : 'GET',
post : 'POST',
put : 'PUT',
'delete' : 'DELETE',
patch : 'PATCH'
},
defaultHeaders = {
};
var doRequest = function(cfg, originalCfg) {
// API: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
var request = new XMLHttpRequest(),
url;
if (cfg.url) {
url = cfg.url
}
else if (cfg.endpoint) {
url = urlRoot + cfg.endpoint
}
else {
throw("Ajax: No url or endpoint defined");
}
request.open(cfg.method, url);
// Set request headers
for (var headerName in defaultHeaders) {
request.setRequestHeader(headerName, defaultHeaders[headerName]);
}
/*
0 UNSENT open() has not been called yet.
1 OPENED send() has been called.
2 HEADERS_RECEIVED send() has been called, and headers and status are available.
3 LOADING Downloading; responseText holds partial data.
4 DONE The operation is complete.
*/
request.onreadystatechange = function(event) {
// Skip if we're not done
if (request.readyState !== 4) {
return;
}
var responseData;
// console.log('request');
// console.log(request);
// debugger;
if (request.responseType == 'json') {
responseData = requeset.response;
}
else if (request.responseText) {
try {
responseData = JSON.parse(request.responseText);
}
catch(e) {
}
}
if (request.status === 200) {
// console.log('success', request.resonseText);
if (cfg.success) {
cfg.success.call(cfg.success || {}, responseData, originalCfg, request);
}
}
else {
console.log('failure');
console.log(request);
console.log(event);
if (cfg.success) {
cfg.success.call(cfg.success || {}, responseData, originalCfg, request);
}
}
};
request.send();
}
var Ajax = {
get : function(cfg) {
var requestCfg = Object.assign({}, cfg);
requestCfg.method = methods.get;
doRequest(requestCfg, cfg);
},
post : function(cfg) {
},
put : function(cfg) {
},
'delete' : function(cfg) {
},
patch : function(cfg) {
}
};
module.exports = Ajax;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment