理解jQuery AJAX事件 - 成功和ajaxSuccess

7

需要一些帮助理解此处记录的successajaxSuccess事件之间的区别。

success是一个本地事件,而ajaxSuccess是一个全局事件。我了解本地和全局变量之间的区别,但有些难以理解事件范围的概念。

在什么情况下应该优先选择其中的一个?以下是一些示例场景:


1
ajaxSuccess 会在每个 Ajax 请求发送时触发。而 success 则只适用于单个请求。 - Rory McCrossan
好的,那么像加载或请求失败对话框的显示/隐藏这样的内容是否适合使用全局事件呢? - Bryan
1
它最好用于需要同样的代码运行于大量 AJAX 请求的选定事件中。例如,设置一个全局错误处理程序,在每次请求失败时向用户显示一个模态消息。 - Rory McCrossan
候选任务是指需要在每个成功或错误事件中重复执行的任务(例如隐藏在UI中运行的Ajax加载程序)。 - Fabrizio Calderan
2个回答

9

您可以如下使用全局事件:

$.ajaxSuccess(function(){
//do my global thing here
});

由于全局事件将触发每个ajax调用的成功,而不仅仅是其中一个。
但是,

success: function(){/* do local here */});

仅在局部ajax调用函数内作为私有对象触发。

请注意

$.ajaxComplete(function(){ });

如果它在完成时触发(无论是否出错),complete可能就是您想要的。

编辑:值得注意的是,全局 ajaxSetup 中的本地 success:(不建议使用此方法,建议使用 $.ajaxSuccess

$.ajaxSetup({
    success: function() {
       // local within the ajaxSetup
    }
});

那么,我们为什么会选择其中的一个呢?也许您需要对返回的对象进行特殊过滤:

$(selector1).ajax({
    success: function(data){
        processMySelector1JSON(data);
    }
});
$(selectorOther).ajax({
    success: function(data){
        processMySelectorOtherJSON(data);
    }
});
$.ajaxSuccess(function(){
  $('#message').text('Ajax Done!').fadeIn(function(){$(this).fadeOut();});
});

0

success: function() 更好,因为只有在请求成功时才会调用此事件。它检查来自服务器的错误和数据错误,使其成为更好的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接