封装Ajax

method:值为get或post
url:请求地址
data:请求参数,传入键值对类型的字符串,不同的键值对使用&符号隔开,例如”a=1&b=2”;
如果不需要请求参数则赋值为null.
deal200:接收一个带有参数的函数对象,用来进行响应结果的处理
deal404:接收一个函数对象,用来处理404错误
deal500:接收一个函数对象,用来处理500错误。
async:异步同步设置,,默认是异步,false代表同步,true代表异步。
封装的方法是使用与字符的响应数据,不适用于xml的响应数据

function testAjax(method,url,data,deal200,deal404,deal500,async){
        //创建ajax引擎对象
        var  ajax;
        if(window.XMLHttpRequest){
           ajax=new XMLHttpRequest();
        }else if(window.ActiveXObject){
           ajax=new ActiveXObject("Msxml2.XMLHTTP");
        }
        //复写onreadystatechange函数
        ajax.onreadystatechange=function(){
           //判断ajax状态码
           if(ajax.readyState==4){
              //判断响应状态码
              if(ajax.status==200){
                 //获取响应信息
                 var dd=ajax.responseText;
                 //处理响应信息
                 if(deal200){
注:js中可以直接传入一个方法,调用时在方法名后加()不然只是代表此方法对象不调用
此处的deal200为传入的匿名函数,然后又将dd数据传入到了这个匿名函数,从而实现了数据的操作
                   deal200(dd);
                 }

              }else if(ajax.status==404){
                 if(deal404){
                   deal404();
                 } 
              }else if(ajax.status==500){
                 if(deal500){
                   deal500();
                 } 
              }else{
                 alert("未知错误,无效的ajax响应数据");
              } 
           }
        } 

注:判断请求方式,get时send为null,url拼接参数
post时send传入参数,使用 setRequestHeader() 来添加 HTTP 头

 if("get"==method.toLowerCase()){
toLowerCase()转换为小写
           //创建请求
            ajax.open(method, url+(data==null?"":"?"+data), async);
            //发送请求
            ajax.send(null);
        }else if("post"==method.toLowerCase()){
           ajax.open("post", url, async);
           ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
           ajax.send(data);
        } 
      }

为了实现封装后的Ajax的公用,将其写在js文件中,使用时引用即可,先引用后使用,引用的script标签要在使用的script标签之前,否则会报错

<!--引入js文件  -->
    <script type="text/javascript" src="js/AjaxUtil.js"></script>
    <!--声明js函数  -->
    <script type="text/javascript">
   //使用封装的ajax实现下拉框数据的填充
   function getSelData2(){
      alert("我是封装方式调用");
       myAjax("get","sel",null, function(data){
注:获取数据的方法要传入一个date参数
        //处理响应数据
           //使用eval函数将数据转换为可执行的js代码
           eval("var c="+data);
           //获取要填充数据的HTML对象
           var sel=document.getElementById("sel");
           //将数据填充到对象中
           for(var i=0;i<c.length;i++){
             sel.innerHTML=sel.innerHTML+"<option value="+c[i].cid+">"+c[i].cname+"</option>"
           }
       });
   }
    </script>
  </head>

  <body onload="getSelData2()">
  <h3>ajax学习下拉框数据填充</h3>
      <hr />
      请选择班级信息:<select name="" id="sel"></select>   
  </body>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值