1 原生请求步骤
(1)创建XMLHttpRequest对象
(2)准备发送:open()
包含三个参数:
method:get/post
url:链接的php文件
(3)发送请求:send()
get请求send()为空
(4)监听函数
xhr.onreadystatechange
2 Readystate状态码
(1)0表示为创建完对象
(2)1表示准备发送请求
(3)2表示服务器接收请求
(4)3表示服务器处理请求
(5)4表示服务器处理完毕,响应数据
http协议状态码:xhr.status
2XX:表示成功 200
3XX:重定向
4XX:资源不存在
POST传递参数需要设置请求头信息:
xhr.setRequestHeader(“Content-type”,“application/x-www-form-urlencoded;charset=utf-8”)
3 参数传递
(1)get:用url传递参数
(2)post:在send中传递参数
4 json
将字符串转换成对象:JSON.parse()
5 ajax兼容写法
var xhr=null;
if(window.XMLHttpRequest)
{
xhr=new XMLHttpRequest();
}
else
{
xhr=new ActiveXObject('Microsoft.XMLHTTP');
}
6 Jquery的ajax写法
语法:
$.ajax({
type:“post/get”,
url:"",
data:{},
dataType:“json/xml/text/html/js”,//返回的数据类型
async:“true”,
success:function(res){},//请求成功的函数 res形参
error:function(error){},//请求失败 error 形参失败类型
beforeSend:function(){},//请求成功之前执行的函数
complete:function(){},//请求完毕 不管成功还是失败都执行
})
7 跨域
从当前的域下区访问其他域下的资源
为什么要跨域?
(1)资源可能在不同的服务器上存储
(2)访问其他网站的资源
解决跨域的方案:
(1)jsonp
动态创建script标签,利用src属性访问浏览器上的任意资源
(2)cors资源共享
设置响应同,使浏览器允许跨域请求
(3)proxy反向代理
(4)iframe
jquery封装的跨域请求:
$.ajax({
type:“get”, //jsonp跨域只有get请求
url:“接口”,
dataType:‘jsonp’,
data={},
jsonp:’’,//后台定义的接收的函数名字
jsonpCallback:"",
})