怎样用原生js封装ajax函数

步骤:

JS原生ajaxajax:一种请求数据的方式,不需要刷新整个页面;
ajax的技术核心是 XMLHttpRequest 对象;
ajax 请求过程:创建 XMLHttpRequest 对象、连接服务器、发送请求、接收响应数据;
1.第一步:创建对象,考虑兼容性。

方法步骤:

function getXHR(){
    //1:创建ajax对象
    var oAjax;
    if(window.XMLHttpRequest){
    //IE7+, Firefox, Chrome, Opera, Safari
    oAjax=new XMLHttpRequest();
    else{
    //  这是兼容IE
    oAjax=new ActiveXObject("Microsoft.XMLHTTP")
                }               
        return oAjax;
                }

2.第二步:验证ajax对象是否创建成功。

方法步骤:

$('username').onkeyup=function(){}   //  //onkeyup onblur

3.第三步:发送请求

方法步骤:

var xhr=getXHR();
// 发送请求(准备资料,真正的发送)
open(get,url,true)
//第一个参数:数据传输方式 get  post                    
// 第二个参数:处理文件,要数据:直接写路径就好;提交数据:在地址那里写数据(get方式)
//第三个参数:同步或者异步方式,默认是异步true

4.第四部:发送请求。

方法步骤:

xhr.send(null);
//send() 如果是get方式,写null或者为空
//如果是post,参数那就直接写要传输的内容

5.请求状态监控

      onreadystatechange事件
      readyState属性:请求状态
     0    (未初始化)还没有调用open()方法
     1    (载入)已调用send()方法,正在发送请求
     2    (载入完成)send()方法完成,已收到全部响应内容
     3    (解析)正在解析响应内容
     4    (完成)响应内容解析完成,可以在客户端调用了
           status属性:请求结果
           responseText

方法步骤:

xhr.onreadystatechange=function(){
    if(xhr.readyState==4){
       if(xhr.status==200){
        }                           
    }
}

js的ajax的GET请求实例:

<script type="text/javascript">
            /* 创建 XMLHttpRequest 对象 */
            var xmlHttp;
            function GetXmlHttpObject() {  
                if(window.XMLHttpRequest) { 
         // code for IE7+, Firefox, Chrome, Opera, Safari      
         xmlhttp=new XMLHttpRequest(); 
   }
    else {
    // code for IE6, IE5        
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
            }  
        return xmlhttp;
                }
    // ajax方法-
  function getLabelsGet(){    
        xmlHttp = GetXmlHttpObject();  
        if(xmlHttp == null) {    
            alert('您的浏览器不支持AJAX! ');  
            return;  
                    }  
    var id = document.getElementById('id').value;  
    var url = "?id=" + id + "&t/" + Math.random();
        xmlHttp.open("GET", url, true);  
//发送事件后,收到信息了调用函数 
        xmlHttp.send();
                }
        function getOkGet() {  
    if(xmlHttp.readyState == 1 || xmlHttp.readyState == 2 | xmlHttp.readyState == 3) { 
        // 本地提示:加载中  
            }  
        if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {    
         var d = xmlHttp.responseText;   
           // 处理返回结果  
                } 
                }
        </script>

js的ajax的POST请求实例:

<script type="text/javascript">
            /* 创建 XMLHttpRequest 对象 */
            var xmlHttp;
            function GetXmlHttpObject() {
                if(window.XMLHttpRequest) { 
                // code for IE7+, Firefox, Chrome, Opera, Safari 
            xmlhttp = new XMLHttpRequest();
                } else { 
                // code for IE6, IE5 
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                return xmlhttp;
            }
            // ajax方法- 
            function getLabelsPost() {
                xmlHttp = GetXmlHttpObject();
                if(xmlHttp == null) {
                    alert('您的浏览器不支持AJAX!');
                    return;
                }
                var url = "http://www.lifefrom.com/t/" + Math.random();
                xmlhttp.open("POST", url, true);
                xmlhttp.setRequestHeader("Content-type", 

"application/x-www-form-urlencoded");
                xmlhttp.send();
                xmlHttp.onreadystatechange = getLabelsOK; 
//发送事件后,收到信息了调用函数 
            }
            function getOkPost() {
                if(xmlHttp.readyState == 1 || xmlHttp.readyState == 2 || xmlHttp.readyState == 3)                   {
                    // 本地提示:加载中/处理中
                }
                if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
            var d = xmlHttp.responseText; 
            // 返回值  // 处理返回值
                }
            }
        </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值