63 lines
1.6 KiB
JavaScript
63 lines
1.6 KiB
JavaScript
class Api {
|
|
|
|
constructor() {
|
|
this.ajax = new XMLHttpRequest();
|
|
this.baseUrl = config.baseUrl();
|
|
}
|
|
|
|
get(option) {
|
|
// toast.loading();
|
|
|
|
// 转换get参数
|
|
var params = "";
|
|
for (const key in option.data) {
|
|
params+= `&${key}=${option.data[key]}`
|
|
}
|
|
|
|
params = params.replace("&", "?")
|
|
option.url = this.baseUrl + option.url + params;
|
|
|
|
return new Promise((resolve,reject) => {
|
|
this.ajax.open("GET",option.url);
|
|
this.ajax.send();
|
|
return this.readystatechange(resolve, reject)
|
|
});
|
|
}
|
|
|
|
post(option) {
|
|
this.ajax = new XMLHttpRequest();
|
|
toast.loading();
|
|
return new Promise( (resolve,reject) => {
|
|
this.ajax.open("POST",this.baseUrl+option.url);
|
|
this.ajax.setRequestHeader("Content-Type","application/json");
|
|
this.ajax.setRequestHeader("bmy","liubing");
|
|
|
|
this.ajax.send(option.data);
|
|
return this.readystatechange(resolve, reject)
|
|
});
|
|
}
|
|
|
|
readystatechange(success,error) {
|
|
this.ajax.onreadystatechange = () => {
|
|
if (this.ajax.readyState == 4 ) {
|
|
if (this.ajax.status == 200) {
|
|
var data = JSON.parse(this.ajax.response);
|
|
// toast.clearLoading();
|
|
switch (data.status) {
|
|
case 200:
|
|
success(data.result);
|
|
break;
|
|
case 500:
|
|
toast.tips({ message: data.message });
|
|
throw new Error(data.message);
|
|
break;
|
|
}
|
|
} else {
|
|
error && error(this.ajax)
|
|
throw new Error("网络请求出错");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
} |