let xmlHttp = new XMLHttpRequest();//创建发送请求的对象
//这是为了兼容IE的获取ajac请求对象的方法 // let getXmlHttpRequest = function () { // if (window.XMLHttpRequest) { // //主流浏览器提供了XMLHttpRequest对象 // return new XMLHttpRequest(); // } // else if (window.ActiveXObject) { // //低版本的IE浏览器没有提供XMLHttpRequest对象 // //所以必须使用IE浏览器的特定实现ActiveXObject // return new ActiveXObject("Microsoft.XMLHTTP"); // } // };
xmlHttp.open(‘GET‘,‘https://www.baidu.com‘);//设置请求的地址和方法 xmlHttp.send();//发送请求
//xmlHttp请求的状态有五种0,1,2,3,4。所以这个状态改变的回调函数会执行四次,即0变为1、1变为2、2变为3、3变为4 //当var xmlHttp = new XMLHttpRequest();这句执行完后,xmlHttp.readyState为0,表示对象存在 //调用open方法根据参数完成对象设置,并调用send方法发送请求,这时候xmlHttp.readyState为1,表示正在向服务端发送请求 //当send方法执行完成后,接收完全部的返回数据,xmlHttp.readyState为2 //接收完数据后进行解析,根据服务器端响应头部返回的MIME类型把数据转换成能通过responseBody、responseText或responseXML属性存取的格式,这时候xmlHttp.readyState为3 //响应内容解析完成,可以在客户端调用了,xmlHttp.readyState为4 xmlHttp.onreadystatechange=()=>{//当请求的状态发生改变的时候调用回调函数 //我们只看请求完成后的情况,因为就算请求失败了,它最终的状态也会变为4,比如请求一个不存在的网页 if(xmlHttp.readyState==4){ console.log(‘请求流程执行完了...‘); //console.log(xmlHttp.status); //请求的过程走完之后我们还需要通过判断请求的状态码xmlHttp.status来看请求是否成功,常用的状态码和含义 //200:请求成功(后台处理结果ok)、303:重定向 //400:请求错误、401:未授权、403:禁止访问、404:文件未找到 //500:服务器错误 if(xmlHttp.status==200){ let response = xmlHttp.responseText;//获取响应的内容,以文本的方式 console.log(‘请求成功‘); }else{ console.log(`请求失败:${xmlHttp.status}`); } } };