function ajax({ method = 'GET', url, data }) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
// GET请求:参数拼接到URL
if (method.toUpperCase() === 'GET' && data) {
url += '?' + new URLSearchParams(data).toString();
}
xhr.open(method, url); // 配置请求方式和地址
// POST请求:设置JSON格式请求头
if (method.toUpperCase() === 'POST') {
xhr.setRequestHeader('Content-Type', 'application/json');
}
xhr.onload = () => // 处理响应的回调
(xhr.status >= 200 && xhr.status < 300)
? resolve(JSON.parse(xhr.responseText))
: reject(`请求失败: ${xhr.status}`);
xhr.onerror = () => reject('网络错误'); // 处理错误的回调
xhr.send(method === 'POST' ? JSON.stringify(data) : null); // 发送请求
});
}
注意点:
1.new URLSearchParams是处理URL参数的“格式转换器”,只接受简单对象,不支持嵌套对象。
2.xhr.open必须在xhr.setRequestHeader前面。
3.上方代码缺少判空等细节,具体使用需根据具体情况补充。
1399

被折叠的 条评论
为什么被折叠?



