Javascript 如何在jQuery中执行本地和全局ajax事件?
最近,在从转换到的过程中,我遇到了一些基本问题 我在应用程序中使用了几个AJAX请求;对于95%的请求,我希望执行一些全局事件,例如显示或隐藏加载指示器。除了全局功能外,每个请求还应该在完成后执行一些自定义代码 看起来,一旦设置了局部变量,它们就会覆盖全局变量。例如,请参见以下代码:Javascript 如何在jQuery中执行本地和全局ajax事件?,javascript,ajax,javascript-events,jquery,Javascript,Ajax,Javascript Events,Jquery,最近,在从转换到的过程中,我遇到了一些基本问题 我在应用程序中使用了几个AJAX请求;对于95%的请求,我希望执行一些全局事件,例如显示或隐藏加载指示器。除了全局功能外,每个请求还应该在完成后执行一些自定义代码 看起来,一旦设置了局部变量,它们就会覆盖全局变量。例如,请参见以下代码: // global events $('#loader').bind('ajaxStart', function() { // in this particular example, the ajaxSt
// global events
$('#loader').bind('ajaxStart', function() {
// in this particular example, the ajaxStart() works fine,
// as it has not been overridden
Loader.enable();
}).bind('ajaxComplete', function() {
// this section will not execute. when the local complete()
// is removed, it will execute just fine
Loader.disable();
} );
// local ajax event
$.ajax({
type: $(element).attr('method'),
url: $(element).attr('action'),
data: $(element).serialize(),
global: 'true',
complete: function(data) {
if (params.target && $('#' + params.target)) {
$('#' + params.target).html(data.responseText);
}
Behaviour.apply();
});
在这种特殊情况下,local complete()事件似乎停止了全局ajaxComplete()事件的执行
是否有办法将本地ajax事件和全局ajax事件同时执行?我还没有尝试过,但为什么不创建一个全局方法:
function globalAjaxComplete(data)
并从全局和本地事件处理程序调用它
您还可以定义一个类“ajaxEnabled”,并执行以下操作:
$(".ajaxEnabled").bind("ajaxStart",
Function() { globalAjaxComplete(); });
这样就不需要每次都调用全局方法
但是仍然不知道为什么本地绑定会取消全局绑定。只是尝试运行您的代码。添加缺少的});不过。工作得很有魅力。按以下顺序拨打电话:
// local ajax event
$.ajax({
...
global: 'true',
complete: function(data) {
...
}
}); // <=== This line here
//本地ajax事件
$.ajax({
...
全球:“真的”,
完成:功能(数据){
...
}
}); // 首先,感谢您的回复。它们至少帮助我一次又一次地重新评估代码
问题和解决方案非常简单:
behavior.apply()在我的本地完成事件中调用的code>在别处触发了一个错误,阻止了complete()
函数正确完成并有效地禁用全局ajaxComplete()
事件。修复此错误也修复了我的问题
这意味着jQuery支持将本地和全局ajax事件结合起来。我还没有尝试过这一点,但它无疑会起作用。不过,这需要我对每个AJAX请求都使用这种结构,这并不能真正改进我的代码。错误现在已经修复,但是由错误的粘贴引起的。这并不能解决我的问题。