您的位置:首页 > Web前端 > JQuery

jquery 执行Ajax的过程中触发的事件

2014-06-20 16:44 555 查看
一、Ajax所有过程事件分析

   JQuery在执行Ajax的过程中会触发很多事件。

   这些事件可以分为两种事件,一种是局部事件(Local),一种是全局事件(Global)。

   局部事件:可以通过$.ajax来调用,你某一个Ajax请求不希望产生全局的事件,则可以设置global:false。

   全局事件:跟click等事件类似,可以绑定到到每一个DOM元素上。

   这些事件的按照事件的触发顺序如下介绍:

局部事件(Local)

beforeSend
局部事件

当一个Ajax请求开始时触发。如果需要,你可以在这里设置XHR对象。

success
局部事件

请求成功时触发。即服务器没有返回错误,返回的数据也没有错误。

error
局部事件

仅当发生错误时触发。你无法同时执行success和error两个回调函数。

complete
局部事件

不管你请求成功还是失败,即便是同步请求,你都能在请求完成时触发这个事件

全局事件(Global)

ajaxStart
全局事件

开始新的Ajax请求,并且此时没有其他ajax请求正在进行。

ajaxSend
全局事件

请求开始前触发的全局事件。

ajaxSuccess
全局事件

全局的请求成功。

ajaxError
全局事件

全局的发生错误时触发。

ajaxComplete
全局事件

全局的请求完成时触发。

ajaxStop
全局事件

当没有Ajax正在进行中的时候,触发。

注:除了ajaxStart和ajaxStop之外,其他的事件都有3个参数

event, XMLHttpRequest, ajaxOptions

第一个是事件,第二个是XHR对象,第三个参数最有用,是当时调用这个ajax的时候的参数。

对于ajaxError,还有第四个参数thrownError,只有当异常发生时才会被传递。

 

二、Ajax所有过程事件示例

2.1、HTML代码

      <div>

            <input type="button" onclick="BtnSpareClick();" value="PartEvents" />

            <input type="button" onclick="BtnGlobalClick();" value="GlobalEvents" />

      </div>

       <div id="Result">Result</div>

       <div id="Process">Process</div>

2.2、Jquery Ajax脚本 

局部事件(Local)实例
<script language="javascript" type="text/javascript">

            $.ready(function BtnSpareClick() {

                $.ajax({

                    type: "get",

                    url: "http://www.jb51.net/windy2008/rss",

                    data: {},

                    global: false,

                    beforeSend: function(data, status, settings) {

                        $("#Process").text("Part请求开始前");

                        alert($("#Process").text());

                    },

                    success: function(data, status, settings) {

                        $("item", data).each(function(i, domEle) {

                            $("#Result").append("<div>" + $(domEle).children("title").text() + "</div>");

                        });

                        $("#Process").text("Part请求成功时");

                        alert($("#Process").text());

                    },

                    complete: function(data, status, settings) {

                        $("#Process").text("Part请求完成时");

                        alert($("#Process").text());

                    },

                    error: function(data, status, settings) {

                        $("#Process").text("Part请求错误时");

                        alert($("#Process").text());

                    }

                });

            });

</script>

全局事件(Global)实例

<script language="javascript" type="text/javascript">

 $.ready(function BtnGlobalClick() {

                $.get("http://www.jb51.net/windy2008/rss", {}, function(data, status, settings)

{

                    $("item", data).each(function(i, dom
4000
Ele) {

                        $("#Result").append("<div>" + $(domEle).children("title").text() + "</div>");

                    });

                });

                $("#Process").ajaxStart(function() {

                    alert($(this).text());

                    $(this).text("开始新的Ajax请求");

                });

                $("#Process").ajaxStop(function() {

                    $(this).text("当没有Ajax正在进行中的时候");

                    alert($(this).text());

                });

                $("#Process").ajaxSend(function() {

                    $(this).text("请求开始前");

                    alert($(this).text());

                });

                $("#Process").ajaxSuccess(function() {

                    $(this).text("请求成功");

                    alert($(this).text());

                });

                $("#Process").ajaxComplete(function() {

                    $(this).text("请求完成时");

                    alert($(this).text());

                });

                $("#Process").ajaxError(function() {

                    $(this).text("请求错误时");

                    alert($(this).text());

                });

            });

        </script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息