Files
ClassContent/历届学生/font-end-nine/项目练习/学生项目/杨锐/枸杞社/js/ajax/index.js
2024-09-27 02:06:13 +08:00

66 lines
1.7 KiB
JavaScript

class Ajax {
constructor() {
this.ajax = new XMLHttpRequest();
}
/**
*
* @param {*} params
* {
* url: '',
* data: {
* id: 1,
* page: 2
* },
* header: {
* 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
* }
* }
*/
get(params) {
return new Promise((success, error) => {
var str = ""
for (const key in params.data) {
str += `&${key}=${params.data[key]}`
}
str = str.replace("&", "?")
this.ajax.open("GET", `${config.checkUrl()}${params.url}${str}`)
//由基地址 短地址 加参数组成
this.ajax.send()
this.readystatechange(success, error)
})
}
post() { }
readystatechange(success, error) {
this.ajax.onreadystatechange = () => {
if (this.ajax.readyState == 4) {
if (this.ajax.status == 200) {
var data = JSON.parse(this.ajax.responseText)
success(this.checkStatus(data))
//如果http状态码和ajax状态码都请求成功就调用判断接口方法 this.checkStatus
} else {
error(this.ajax)
}
}
}
}
//判断接口的状态
checkStatus(data) {
switch (data.status) {
case 200:
return data.result
break;
case 404:
alert(data.msg);
throw new Error(data.msg)
break;
default:
break;
}
}
}