面向对象之ajax

1.Ajax发送请求的几个步骤

1. 创建 XMLHttpRequest 对象

var xhr = new XMLHttpRequest();
//IE6 使用
var xhr= new ActiveXObject('Microsoft.XMLHTTP');

2. 准备发送

xhr.open('get','./check.php',true);

3. 执行发送动作

xhr.send(null);

4. 指定回调函数

        xhr.onreadystatechange=function(){
            if(xhr.readyState == 4){
                if(xhr.status == 200){
                    var data=xhr.responseText;
                }
            }
        }

分析:

    /*
    * 参数一 :请求方式(get获取数据,post提交数据)
    * 参数二 :请求地址
    * 参数三 :同步或者异步标志位,默认是ture表示异步,false表示同步
    */
     get请求
     如果是get请求那么请求参数必须在url中传递
     encodeURI()用来对中文参数进行编码,防止乱码
     ----------------
     var param = 'username='+uname+'&password='+pw;
     xhr.open('get','03get.php?'+encodeURI(param),true);
     ------------------
         xhr.open('get','./check.php',true);

     post请求
     --------------------
      var param = 'username='+uname+'&password='+pw;
     xhr.open('post','04post.php',false);
     // 3、执行发送动作
     xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
     xhr.send(param);//post请求参数在这里传递,并且不需要转码
     --------------------

2.服务器返回相应数据的两种格式

responseXMl

<booklist>
    <book>
        <name><?php echo $arr[0]['name'] ?></name>
        <author><?php echo $arr[0]['author'] ?></author>
        <desc><?php echo $arr[0]['desc'] ?></desc>
    </book>
</booklist>

注意:使用xml传输数据时候需要使用header("Content-Type:text/xml;");
responseText

21.什么叫元数据

描述数据的数据,叫做元数据

json数据格式:

{
    "name":"zhansan",
    "age" :12,
    "hobby":["coding","swimming","singing"],
    "firend":{
            "high":"180cm",
            "weight":"80kg"
        }
}

原生ajax的封装

function ajax(url,type,param,dataType,callback){
    var xhr = null;
    if(window.XMLHttpRequest){
        xhr = new XMLHttpRequest();
    }else{
        xhr = new ActiveXObject('Microsoft.XMLHTTP');
    }
    if(type == 'get'){
        url += "?" + param;
    }
    xhr.open(type,url,true);

    var data = null;
    if(type == 'post'){
        data = param;
        xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    }
    xhr.send(data);
    xhr.onreadystatechange = function(){
        if(xhr.readyState == 4){
            if(xhr.status == 200){
                var data = xhr.responseText;
                if(dataType == 'json'){
                    data = JSON.parse(data);
                }
                callback(data);
            }
        }
    }
}

 
 
 
posted @ 2017-04-13 22:06  我叫睡不醒  阅读(284)  评论(0编辑  收藏  举报