Ajax原理与使用

一、什么是 AJAX ?

AJAX = 异步 JavaScript 和 XML。Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,
然后用javascript来操作DOM而更新页面。AJAX可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

二、AJAX请求过程

ajax 请求过程:创建XMLHttpRequest对象、连接服务器、发送请求、接收响应数据;基本上所有现代浏览器均支持XMLHttpRequest 对象(IE5 和 IE6 使用
ActiveXObject),具体实例如下:
    function ajax(options){
        //创建 - 非IE6 - 第一步
        var xhr = null;
        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();
        }

        //IE浏览器创建XmlHttpRequest对象
        if (window.ActiveXObject) {
            try {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
                try {
                    xhr = new ActiveXObject("msxml2.XMLHTTP");
                }
                catch (ex) { }
            }
        }
        if (!xhr) {
            alert("创建xmlhttp对象异常!");
            return false;
        }
        
        //接收 - 第三步
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4) {
                var status = xhr.status;
        //此处不判断304,因为增加随机数后,不命中缓存
                if (status >= 200 && status < 300) {
                    document.getElementById("selector").innerHTML= xmlhttp.responseText(或者xhr.responseXML);
                } else {
                    document.getElementById("selector").innerHTML= status;
                }
            }
        }
        
        //连接 和 发送 - 第二步 (根据实际情况使用请求方式,GET或POST)
        if (options.type == "GET") {
            xhr.open("GET", options.url + "?" + params, true);
            xhr.send(null);
        } else if (options.type == "POST") {
            xhr.open("POST", options.url, true);   //建立连接,参数一:发送方式,二:请求地址,三:是否异步,true为异步
            //设置表单提交时的内容类型
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xhr.send(params);
        }
        
        
        
    }

三、XMLHttpRequest 对象的三个重要的属性

属性描述
onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。0: 请求未初始化1: 服务器连接已建立2: 请求已接收3: 请求处理中4: 请求已完成,且响应已就绪
status200: “OK” , 404: 未找到页面

注释:onreadystatechange 事件被触发 5 次(0 - 4),对应着 readyState 的每个变化。
XMLHttpRequest.readyState: 状态码的意思
0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了

四、AJAX同步和异步

同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。
而异步则这个AJAX代码运行中的时候其他代码一样可以运行。 相当于执行两个线程互不干扰

五、jQuery中ajax错误处理

 当通过ajax异步调用出错时,会调用 error函数 。error函数语法为:

error:function (XMLHttpRequest, textStatus, errorThrown) { }

(1)参数有三个:XMLHttpRequest 对象、错误信息、(可选)捕获的错误对象。
(2)如果发生了错误,错误信息(第二个参数:textStatus)除了得到null之外,还可能是"timeout", “error”, “notmodified” 和 “parsererror”

发送error可能有下面两条引起的,或者其他程序问题,需要我们认真仔细。
1、data:"{}", data为空也一定要传"{}";不然返回的是xml格式的。并提示parsererror.
2、parsererror的异常和Header 类型也有关系。及编码header(‘Content-type: text/html; charset=utf8’);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值