完美封装一个ajax

什么是ajax?

大白话:就是可以局部刷新页面的一种技术。

创建ajax的步骤是什么?

  •  字优点小,放大后看哦~

封装中要考虑的问题有什么?

over~

源码如下:

 function myAjax(obj){
           
            var defaults={
               type:"get",
               url:"#",
               dataType:"json",
               data:{},//用对象存储参数
               async:true,
               success:function(result){
                   console.log(result)
               }
                   
           }
 
           //让obj中的属性,覆盖到default中的属性
           for(var key in obj){
               defaults[key]=obj[key]
           }

            var  xhr=null
            if(window.XMLHttpRequest){
                xhr=new XMLHttpRequest()
            }
            else{
                xhr=new ActiveXObject("Microsoft.XMLHTTP")
            }

            //得到params
            var params=""
            for(var  attr in defaults.data){
                params+=attr+"="+defaults.data[attr]+"&"
            }
            if(params){
                params=params.substring(0,params.length-1)
            }
            //判断类型
            if(defaults.type=="get"){
                defaults.url+="?"+params
            }
            xhr.open(defaults.type,defaults.url,defaults.async)
            
            if(defaults.type=="get"){
                xhr.send(null)
            }
            else if(defaults.type=="post"){
                xhr.setRequestHeader("content-type","application/x-www-form-urlencoded")
                xhr.send(params)
            }


            if(defaults.async){
                xhr.onreadystatechange=function(){
                    if(xhr.readyState==4){
                        if(xhr.status==200){
                            var result=null
                            if(defaults.dataType=="json"){
                                result=xhr.responseText
                                result=JSON.parse(result)
                            }else if(defaults.dataType=="xml"){
                                result=xhr.responseXML
                            }else{
                                result=xhr.responseText
                            }
                           
                            defaults.success(result)
        
                        }
                    }
                }
            }
           else {
            if(xhr.status==200){
                            var result=null()
                            if(defaults.dataType=="json"){
                                result=xhr.responseText
                                result=JSON.parse(result)
                            }else if(defaults.dataType=="xml"){
                                result=xhr.responseXML
                            }else{
                                result=xhr.responseText
                            }
                            defaults.success(result)
        
                        }
           }

        }



       
       

可以直接测试使用袄~,经验不足,请多多指教。

如果有用的话,那就。。。留个

吧 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值