微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

08.ajax

ajax

文章目录


题目

  1. 手写一个简易的ajax

function ajax (url){
    return new Promise((res,rej)=>{
        let xhr = new XMLHttpRequest()
        xhr.open('GET','/url',true)
        xhr.onreadystatechange=function(){
            if(xhr.readyState === 4 ){
                if(xhr.status === 200){
                    res(JSON.stringify(xhr.responseText))
                }else if(xhr.status === 404){
                    rej(new Error('404'))
                }
            }
        }
        xhr.send(null)
    })
}
  1. 跨域的常用实现方式

知识点

XMLHttpRequest

let xhr = new XMLHttpRequest()
xhr.open('GET','/api',false)
xhr.onreadystatechange = function(){
	if(xhr.readyState === 4}{
		if(xhr.status === 200){
			alert(xhr.responseText)
		}
	}
}
xhr.send(null)

xhr.open('POST','data',true)
xhr.onreadystatechange = function(){

}
xhr.send(JOSN.stringfy{name:123})

状态码

xhr.readyState 状态
0 , 没初始化
1, send()载入
2,send()载入完成
3,解析中
4. 解析完成
xhr.status
200 完成

跨域,解决方

同源策略

  1. ajax请求,浏览器要求当前网页和server必须同源。
  2. 同源:协议,域名,端口三者一致。
  3. 加载图片css js 可以跨域
  4. JSONP可以跨域

跨域

所有的跨域,必须经过server端允许和配合。

JSONP

jQuery事项jsonp

$.ajax({
	url:'../json',
	type:'jsonp'
	jsonpCallback:'callback',
	success:function(data){
	 console.log(data)
	}
})

js实现

window.callback = function (data){
	console.log(data)//跨域的信息
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐