step1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象;
step2. 创建一个新的HTTP请求,并指定改HTTP请求的方法、URL以及验证信息(即请求报文行);
step3. 设置请求报文头(Content-Type:请求资源的MIME类型)(get方式不需要)
step4. 设置响应HTTP状态变化的函数;
step5. 发送HTTP请求;
step6. 获取异步调用返回的数据;
step7. 使用javascript和DOM实现局部刷新;
<script type="text/javascript">
window.onload = function(){
//第一步:创建xhr对象
//xhr是一个对象;里面可以放很多东西,数据;
var xhr = null;
if(window.XMLHttpRequest){//标准浏览器
xhr = new XMLHttpRequest();//创建一个对象
}else{//早期的IE浏览器
xhr = new ActiveXObject('Microsoft.XMLHTTP');//参数是规定的;
}
console.log("状态q"+xhr.readyState);//0
//第二步:准备发送请求-配置发送请求的一些行为
//open即打开链接,第一个参数是以什么方式;第二个是往哪儿发送请求,第三个可以不写,默认true,表示异步,false表示同步;;
xhr.open('get','03form.php',true);
console.log("状态w"+xhr.readyState);//1
//第三步:执行发送的动作
//send也可以写在前面,推荐写在后面,即第四步设置相应请求状态变化函数的后面,第五步;写null是兼容问题;
xhr.send(null);
console.log("状态e"+xhr.readyState);//1
//如果是post请求,需要在状态变化函数与发送请求之前先设定请求报文头
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//第四步:指定一些回调函数,也属于事件函数;不触发不执行,触发条件是xhr.readyState;z这个值有0-4,共5个状态,是由浏览器控制的;
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){//4指服务器返回的数据可以使用;
if(xhr.status == 200){ //判断已经成功的获取了数据;200表示hTTP请求成功;404表示找不到页面;503表示服务器端有语法错误;
var data = xhr.responseText;//json,文本,主角;
// var data1 = xhr.responseXML;
}
}
// console.log("状态t"+xhr.readyState);//2表示已经发送完成;
// console.log(1234);
}
// console.log(456);
console.log("状态r"+xhr.readyState);//1
}
</script>