71 lines
2.0 KiB
JavaScript
71 lines
2.0 KiB
JavaScript
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
|
|
function addQueryString(url, params) {
|
|
if (params && (typeof params === 'undefined' ? 'undefined' : _typeof(params)) === 'object') {
|
|
var queryString = '',
|
|
e = encodeURIComponent;
|
|
|
|
// Must encode data
|
|
for (var paramName in params) {
|
|
queryString += '&' + e(paramName) + '=' + e(params[paramName]);
|
|
}
|
|
|
|
if (!queryString) {
|
|
return url;
|
|
}
|
|
|
|
url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);
|
|
}
|
|
|
|
return url;
|
|
}
|
|
|
|
// https://gist.github.com/Xeoncross/7663273
|
|
function ajax(url, options, callback, data, cache) {
|
|
|
|
if (data && (typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {
|
|
if (!cache) {
|
|
data['_t'] = new Date();
|
|
}
|
|
// URL encoded form data must be in querystring format
|
|
data = addQueryString('', data).slice(1);
|
|
}
|
|
|
|
if (options.queryStringParams) {
|
|
url = addQueryString(url, options.queryStringParams);
|
|
}
|
|
|
|
try {
|
|
var x;
|
|
if (XMLHttpRequest) {
|
|
x = new XMLHttpRequest();
|
|
} else {
|
|
x = new ActiveXObject('MSXML2.XMLHTTP.3.0');
|
|
}
|
|
x.open(data ? 'POST' : 'GET', url, 1);
|
|
if (!options.crossDomain) {
|
|
x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
|
}
|
|
x.withCredentials = !!options.withCredentials;
|
|
if (data) {
|
|
x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
|
|
}
|
|
if (x.overrideMimeType) {
|
|
x.overrideMimeType("application/json");
|
|
}
|
|
var h = options.customHeaders;
|
|
if (h) {
|
|
for (var i in h) {
|
|
x.setRequestHeader(i, h[i]);
|
|
}
|
|
}
|
|
x.onreadystatechange = function () {
|
|
x.readyState > 3 && callback && callback(x.responseText, x);
|
|
};
|
|
x.send(data);
|
|
} catch (e) {
|
|
console && console.log(e);
|
|
}
|
|
}
|
|
|
|
export default ajax; |