大佬教程收集整理的这篇文章主要介绍了如何在每个ajax调用之前和之后触发某些操作,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有几种方法可以实现您的要求。它们之间的唯一区别是它们的实现方式,由您选择哪种方法最适合您的特定情况。方法还取决于您使用的jquery版本,因此我将把答案分为两部分。
从jquery
1.5开始,您可以通过全面改进的API和引入的新jqXHR
对象添加多个回调.AJAX
。它实现Promise(请参见Deferreds)接口,我们可以利用它来发挥我们的优势:
// fn to handle button-toggling
var togglebutton = function() {
var button = $(".button");
button.button(button.button("option", "Disabled") ? "enable" : "disable");
}
// store returned jqXHR object in a var so we can reference to it
var req = $.AJAX({
beforeSend: togglebutton,
success: function(msg){
/* Do what you want */
}
}).success(togglebutton);
// we can add even more callBACks
req.success(function(){ ... });
jquery 1.5还引入了预过滤器,可用于替换jquery 1.4的全局配置:
// good practice: don't repeat yourself, especially SELEctors
var button = $(".button");
$.AJAXPrefilter(function(options, _, jqXHR) {
button.button("disable");
jqXHR.complete(function() {
button.button("enable");
});
});
注意:$
.ajax条目的jqXHR部分具有有关使用的通知jqXHR.success()
:
使用.ajaxStart
和.ajaxStop
将回调绑定到特定选择器。触发这些回调的事件将在所有AJAX请求上触发。
$(".button").AJAXStart(function(){
$(this).button("disable");
}).AJAXStop(function(){
$(this).button("enable");
});
使用.ajaxSetup
设置一个全局AJAX配置。设置对象传递给.AJAXSetup
将被应用到所有的AJAX请求,即使那些由速记制造.get
,.getJsON
和.post
。请注意,不建议这样做,因为它很容易破坏其功能。
$.AJAXSetup({
beforeSend: function(){
$(".button").button("disable");
},
success: function(){
$(".button").button("enable");
}
});
如果您需要过滤某些请求,则可以使用,.ajaxSend
并.ajaxComplete
在哪里可以检查AJAXsetTings
对象。像这样:
var button = $(".button");
// fn to handle filtering and button-toggling
var togglebutton = function(setTings) {
if (setTingS.Url == "/specific/url")
button.button(button.button("option", "Disabled") ?
"enable" : "disable");
}
};
// bind handlers to the callBACks
button.AJAXSend(function(e,x,setTings){
togglebutton(setTings);
}).AJAXComplete(function(e,x,setTings){
togglebutton(setTings);
});
通过对传递给回调处理程序.AJAXSetup
的setTings
对象进行相同类型的检查,也可以使用前面提到的方法来完成。
我正在使用jQuery和jQuery
UI。我体验到用户有时会多次触发ajax调用,因为触发调用的按钮/链接在单击后不会立即被禁用。为了防止这种情况的发生,现在我在“
beforeSend”操作中禁用按钮/链接。
这是典型的Ajax Call对我来说的样子:
$.ajax({
type: "POST",url: "someURL"
data: "someDataString",beforeSend: function(msg){
$(".button").button("disable");
},success: function(msg){
$(".button").button("enable");
// some user FeedBACk
}
});
但是我不想在每个Ajax调用中添加此按钮禁用逻辑。有什么办法全局定义每次在/ after和ajax-call之前都会被调用的函数吗?
以上是大佬教程为你收集整理的如何在每个ajax调用之前和之后触发某些操作全部内容,希望文章能够帮你解决如何在每个ajax调用之前和之后触发某些操作所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。