题目
- 手写一个ajax
- 跨域的常用实现方式
知识点
- XMLHttpRequest
- 状态码
- 跨域:同源策略,跨域解决方案
XMLHttpRequest
xhr.readyState
jsonp
CORS
题目解答
结合promise的ajax
<script>
function ajax(url){
const p = new Promise((resolve,reject)=>{
const xhr=new XMLHttpRequest()
xhr.open('get',url,true)
xhr.onreadystatechange=function(){
if(xhr.readyState===4){
if(xhr.status===200){
resolve(JSON.parse(xhr.responseText))
}else if(xhr.status===404){
reject(new Error('404 not found'))
}
}
}
xhr.send(null)
})
return p
}
const url='/data.json'
ajax(url)
.then(res=>console.log(res))
.catch(err=>console.error(err))
</script>