1.網上不少封裝,可是本身以爲爲何要分開封裝呢?get和post封裝成一個函數很差麼?根據本身之前封裝的ajax順手改了一下,並在本身的項目中使用了一下,還能夠。
function _ajax(options) {
// body...
try {
// statements
options = options || {};
return new Promise((resolve, reject) => {
let xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
if (options.type.toLowerCase() === 'get') {
options.url = options.url + '?' + params(options.data);
options.data = null;
} else {
options.data = params(options.data);
}
xhr.open(options.type, options.url);
if (options.type.toLowerCase() === 'post') {
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
}
xhr.send(options.data);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200 || xhr.status === 304) {
let data = xhr.responseText;
resolve.call(undefined, data);
} else {
reject.call(undefined, xhr.status);
}
}
}
})
} catch (e) {
// statements
console.log(e);
}
}
複製代碼
2.使用方式
_ajax({
type: 'post',
url: baseURL + 'url',
data: {
method: 'method',
accessToken: options.accessToken,
product_id: options.id,
product_code: options.code,
price: options.price
}
}).then(function (res) {
console.log(res);
}, function (err) {
console.log(err);
});
複製代碼