zoukankan      html  css  js  c++  java
  • 全局为每一个ajax请求都附带一个loading效果 .ajaxSend

    描述: 在Ajax请求发送之前绑定一个要执行的函数,这是一个 Ajax Event.

    • 添加的版本: 1.0.ajaxSend( handler(event, jqXHR, ajaxOptions) )

      • handler(event, jqXHR, ajaxOptions)
        类型: Function()
        被调用的函数。

    每当一个Ajax请求即将发送,jQuery就会触发ajaxSend事件,在这个时间点所有处理函数都会使用.ajaxSend()方法注册并执行。

    观察这种方法,建立一个基本的Ajax加载请求:

    1
    2
    3
    <div class="trigger">Trigger</div>
    <div class="result"></div>
    <div class="log"></div>

    在document上绑定事件处理器:

    1
    2
    3
    $(document).ajaxSend(function() {
    $( ".log" ).text( "Triggered ajaxSend handler." );
    });

    现在,我们可以使用任何的jQuery方法构建一个Ajax请求:

    1
    2
    3
    $( ".trigger" ).click(function() {
    $( ".result" ).load( "ajax/test.html" );
    });

    当我们点击class为 trigger 的元素并且Ajax请求即将开始,这个信息就会显示。

    注,这段在官网的原文中已经被删除: 因为.ajaxComplete() 是作为一个jQuery对象实例方法去执行的,回调函数中,我们可以用this关键字作为指定的元素。

    无论哪一个Ajax请求被发送,所有ajaxSend处理器都将被执行。如果我们必须区分不同的请求,我们可以使参数传递给这个处理器。 每次ajaxSend 处理器执行,它传递事件对象,jqXHR对象(在 jQuery 1.4中是XMLHttpRequest对象),和用来创建请求的设置(settings object)对象。如果请求失败,因为JavaScript抛出一个异常,并且作为第四个参数的异常对象被传递给处理程序。举个例子,我们能限制我们的回调到只处理事件处理某一特定的URL:

    1
    2
    3
    4
    5
    $(document).ajaxSend(function(event, jqxhr, settings) {
    if ( settings.url == "ajax/test.html" ) {
    $( ".log" ).text( "Triggered ajaxSend handler." );
    }
    });

    其他注意事项:

    • 在jQuery1.9中,jQuery全局AJAX事件的所有处理程序, 包括哪些.ajaxSend()添加的方法,必须 附加到 document上。
    • 如果 $.ajax()$.ajaxSetup()调用时, global 选项设置为 false.ajaxSend()将不会触发。

    例子:

    当Ajax请求即将发送前显示一个信息。

    1
    2
    3
    $(document).ajaxSend(function(event, request, settings) {
    $( "#msg" ).append( "<li>Starting request at " + settings.url + "</li>" );
    });
    当前结束的时候别忘了关闭loading。
     
    同时也有下面这些方法,参与都与ajaxSend一致。
    $(document).ajaxSend(onAjaxSend)
    .ajaxComplete(onComplete)
    .ajaxSuccess(onSuccess)
    .ajaxError(onError);
  • 相关阅读:
    (兼容)IE9 以下版本浏览器兼容HTML5的方法
    使用ORACLE 中ROWNUM方法实现数据库分批获取
    更新上传到github的代码
    Spring-AOP
    C++结构体的应用_YCOJ
    基本类型数据封装
    sessionStorage 封装
    Vue国际化四 -- 本地缓存
    Vue国际化三【在下拉框中使用】
    Vue国际化二 【在表格中的使用】
  • 原文地址:https://www.cnblogs.com/zhanghai/p/5559957.html
Copyright © 2011-2022 走看看