Skip to content

Instantly share code, notes, and snippets.

@borsch
Last active August 21, 2017 16:55
Show Gist options
  • Save borsch/422c8bd1f64dfc94763600e674adde8e to your computer and use it in GitHub Desktop.
Save borsch/422c8bd1f64dfc94763600e674adde8e to your computer and use it in GitHub Desktop.
wrapper for jquery ajax. use this to omit evety time adding beforeSend: function(){..}
(function(exports){
exports.get = function(options){
options = options || {};
options.type = 'GET';
_ajax(options);
};
exports.put = function(options){
putAndPost(options, 'PUT');
};
exports.post = function(options){
putAndPost(options, 'POST');
};
exports.delete = function(options){
options = options || {};
options.type = 'DELETE';
_ajax(options);
};
exports.uploadFile = function(url, data, onload) {
var payload = new FormData();
for (var key in data) {
payload.append(key, data[key]);
}
var request = new XMLHttpRequest();
request.open('POST', url);
request.onload = function () {
var response = request.response;
if (typeof response === 'string') {
response = JSON.parse(response);
}
onload && onload(response);
};
request.send(payload);
};
function _ajax(options){
options.beforeSend = function(xhr){
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Accept', 'application/json');
};
$.ajax(options);
}
function putAndPost(options, type) {
$.ajax({
url: options.url,
type: type,
data: JSON.stringify(options.data),
dataType: 'json',
beforeSend: function(xhr){
xhr.setRequestHeader('Accept', 'application/json');
xhr.setRequestHeader('Content-Type', 'application/json');
},
success: options.success,
error: options.error || console.log
});
}
})(window.Ajax = {});
/**
Ajax.get({
url: '/my_url',
success: function(response) {
..
},
error: function(xhr) {
..
}
});
Ajax.delete() - same as Ajax.get()
Ajax.post({
url: '/my_url',
data: {
//JSON object with fields that should be sended
id: 1,
foo: 'bar'
},
success: function(response) {
..
},
error: function(xhr) {
..
}
});
Ajax.put() - same as Ajax.post()
Ajax.uploadFile(
'/my_url',
{
//JSON object that should be sended
file: $('#my_file_input')[0].files[0], // param name can be any. use same as parameter on server side
some_fields: 'foo'
},
function(response){
..
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment