Last active
August 21, 2017 16:55
-
-
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(){..}
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(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