zoukankan      html  css  js  c++  java
  • 面向对象之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);
                }
            }
        }
    }

     
     
     
  • 相关阅读:
    jstl标签
    get和post
    try中的局部变量在finally中是找不到的。
    bzoj 4408: [Fjoi 2016]神秘数 数学 可持久化线段树 主席树
    ZOJ2112 BZOJ1901 Dynamic Rankings 树套树 带修改的区间第k小
    BZOJ 2120: 数颜色 带修改的莫队算法 树状数组套主席树
    POJ2104 K-th Number 不带修改的主席树 线段树
    POJ 2891 Strange Way to Express Integers 中国剩余定理 数论 exgcd
    POJ1151 Atlantis 水题 计算几何
    BZOJ 2333: [SCOI2011]棘手的操作 可并堆 左偏树 set
  • 原文地址:https://www.cnblogs.com/ysshuai/p/6706439.html
Copyright © 2011-2022 走看看