全局为每一个ajax请求都附带一个loading效果 .ajaxSend
Posted 武二郎
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全局为每一个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>" ); }); |
$(document).ajaxSend(onAjaxSend)
.ajaxComplete(onComplete)
.ajaxSuccess(onSuccess)
.ajaxError(onError);
以上是关于全局为每一个ajax请求都附带一个loading效果 .ajaxSend的主要内容,如果未能解决你的问题,请参考以下文章
jQuery中的ajaxjquery中ajax全局事件load实现页面无刷新局部加载ajax跨域请求jsonp利用formData对象向服务端异步发送二进制数据