ajax-原生写法步骤

1. Ajax

    :含义:简单的意思就是用一些内置的Js中的方法从后台在浏览器和服务器之间传输数据。

  :使用XMLHttpRequest发送http请求并接收响应。

  :AJAX=异步JavaScript+XML; 

  :ajax是一种无需重新加载整个网页情况下能够更新部分网页的技术。

2. 分为———六个步骤

第一步:创建该对象(注意浏览器的兼容问题)

var xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");//兼容性,前者为大部分主流浏览器,后者为IE浏览器。

第二步:创建一个新的HTTP请求,并指定改HTTP请求的方法、URL以及验证信息; 

xhr.open(method,URL,flag,name,password);
  •   method:该参数指定HTTP的请求方法,有get、post、head、put、delete。
  •   URL:该参数用于指定HTTP请求的URL地址,可以是绝对URL,也可以是相对URL。
  •   flag:可选参数,参数值为布尔型。true表示异步方式(默认)、false表示同步方式。
  •   name:可选参数,用于输入用户名。如果服务器需要验证,则必须使用该参数。
  •   password:可选参数,用于输入密码。如果服务器需要验证,则必须使用该参数。

             注意:post与get对于xhr.open()与xhr.send()的写法有所差别。

//get :
xhr.open(type, url+"需要传递的数据");
xhr.send(null);
//post :
xhr.open(type, url);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send("需要传递的数据");

第三步: 设置响应HTTP状态变化的函数 readyState的值0,1,2,3,4;(并要求status ==200   代表数据成功传回来的状态码)

  • 0:未初始化状态。在创建完XMLHttpRequest对象时,该对象处于未初始化状态。
  • 1:初始化状态。    在创建完XMLHttpRequest对象后使用open()方法创建了HTTP请求时,该对象处于初始化状态。。
  • 2:发送数据状态。在初始化XMLHttpRequest对象后,使用send()方法发送数据时,该对象处于发送数据状。
  • 3:接收数据状态。Web服务器接收完数据并进行处理完毕之后,向客户端传送返回的结果。
  • 4:完成状态。        XMLHttpRequest对象接收数据完毕后,进入完成状态。此时接收完毕后的数据存入在客户端计算机的内存中,可以使用responseText属性或responseXml属性来获取数据。

第四步:获取异步调用返回的数据

xhttp.onreadystatechange = function(){
    if(xhr.readyState==4 ){
    if(xhr.status==200||(xhr.status==0){
    //状态码为0是本地响应成果,200表示处理的结果是ok的 v
    document.write(xhr.responseText);//使用以下语句将返回结果以字符串形式输出 
    //document.write(xhr.responseXML);//或者使用以下语句将返回结果以XML形式输出 
    }else{ 
        alert("出错状态码:"+xhr.status+"出错信息:"+xhr.statusText); 
    } 
}
注意:如果HTML文件不是在Web服务器上运行,而是在本地运行,则xhr.status的返回值为0。

第五步:发送HTTP请求

xhr.send();//根据HTTP请求方法来确定xhe.send()中的内容

第六步:局部更新

根据第四步中的xhr.responseText或xhr.responseXML得到的数据来反馈到页面中。

3. 总结:

 1 var ajax = function(param) {
 2     var xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
 3     var type = (param.type || 'get').toUpperCase();//将传来的urlType转换为大写
 4     var url = param.url; 
 5     if (!url) {
 6         return  //若不存在url地址则返回,不在进行下面的操作
 7     }
 8     var data = param.data, //获取需要传递的参数
 9         dataArr = [];  //定义一个数组
10     for (var k in data) {
11         dataArr.push(k + '=' + data[k]);
12     }
13     dataArr.push('_=' + Math.random());
14     if (type == 'GET') {
15         url = url + '?' + dataArr.join('&');
16         xhr.open(type, url);
17         xhr.send();
18     } else {
19            xhr.open(type, url);
20            xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
21            xhr.send(dataArr.join('&'));
22          }
23     xhr.onload = function() {
24        if (xhr.status == 200 || xhr.readyState==4) {
25           var res;
26           if (param.success && param.success instanceof Function) {
27               res = xhr.responseText;
28               if (typeof res === 'string') {
29                  res = JSON.parse(res);
30                  param.success.call(xhr, res);
31               }
32           }
33        }
34     };
35 };

 

posted @ 2018-03-26 15:02  IT记录  阅读(498)  评论(0编辑  收藏  举报