request(接口名,{name:"张三"},回调方法)
function request(api,data,callback){
var xhr = new XMLHttpRequest();
let baseUrl="http://localhost:8080/"
let url1=baseUrl+api+"?"
let url=appendQueryParams(url1,data)
console.log('url',url)
xhr.open("GET", url, true); // 使用GET方法请求URL,异步
xhr.onload = function () {
if (xhr.status === 200) {
// 请求成功,调用回调函数并传入响应文本
callback(null, xhr.responseText);
} else {
// 请求失败,调用回调函数并传入错误对象
callback(new Error('Request failed. Returned status of ' + xhr.status));
}
};
xhr.onerror = function () {
// 网络错误等,调用回调函数并传入错误对象
callback(new Error('There was a network error.'));
};
// 发送请求
xhr.send();
}
function appendQueryParams(url, params) {
// 确保参数是对象
if (typeof params !== 'object' || params === null) {
return url;
}
// 初始化查询字符串
let queryString = '';
// 遍历参数对象
for (let key in params) {
if (params.hasOwnProperty(key)) {
// 跳过那些值为空或undefined的参数
if (params[key] !== null && params[key] !== undefined) {
// 如果queryString已经存在内容,则添加&
if (queryString) {
queryString += '&';
}
// 编码键和值,并添加到查询字符串
queryString += encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
}
}
}
// 如果URL中已存在查询字符串,则添加&,否则添加?
if (url.includes('?')) {
url += '&' + queryString;
} else {
url += '?' + queryString;
}
return url;
}