使用
<script>
try {
let l_hash = location.hash
let ids = l_hash.slice(1)
let url = 'http://127.0.0.1:3000/getData'
const xhr = new XMLHttpRequest()
// 设置超时30s
xhr.timeout = 30000
xhr.open('GET', url, true)
xhr.send()
xhr.onload = () => {
console.log(xhr)
if (xhr.readyState == 4 && xhr.status == 200) {
let data = JSON.parse(xhr.response)
if (data.state == 'success') {
console.log(data)
} else {
alert(data.msg)
window.location.replace('https://www.baidu.com/')
}
}
}
// 超过上面30s时间触发
xhr.ontimeout = function () {
console.log('请求超时')
alert('请求超时')
}
// 请求错误触发
xhr.onerror = () => {
console.log('网络异常')
alert('网络异常')
}
} catch (error) {
console.log(error)
}
</script>
封装
<script>
function reqAjax() {
return new Promise((resolve, reject) => {
let url = 'http://127.0.0.1:3000/getData'
const xhr = new XMLHttpRequest()
xhr.open('GET', url, true)
xhr.onload = () => {
console.log(xhr)
if (xhr.readyState == 4 && xhr.status == 200) {
resolve(xhr.response)
}else{
reject('error')
}
}
xhr.send()
})
}
;(async () => {
const data = await reqAjax()
console.log(data)
console.log('等了...')
})()
</script>