Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery中执行本地和全局ajax事件?_Javascript_Ajax_Javascript Events_Jquery - Fatal编程技术网

Javascript 如何在jQuery中执行本地和全局ajax事件?

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

最近,在从转换到的过程中,我遇到了一些基本问题

我在应用程序中使用了几个AJAX请求;对于95%的请求,我希望执行一些全局事件,例如显示或隐藏加载指示器。除了全局功能外,每个请求还应该在完成后执行一些自定义代码

看起来,一旦设置了局部变量,它们就会覆盖全局变量。例如,请参见以下代码:

// 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(); });
这样就不需要每次都调用全局方法


但是仍然不知道为什么本地绑定会取消全局绑定。

只是尝试运行您的代码。添加缺少的});不过。工作得很有魅力。按以下顺序拨打电话:

  • ajaxStart
  • 完整的
  • ajaxComplete
  • 以下是我所做的:

    // local ajax event
    $.ajax({
        ...
        global: 'true',
        complete: function(data) {
            ...
        }
    }); // <=== This line here
    
    //本地ajax事件
    $.ajax({
    ...
    全球:“真的”,
    完成:功能(数据){
    ...
    }
    
    }); // 首先,感谢您的回复。它们至少帮助我一次又一次地重新评估代码

    问题和解决方案非常简单:

    behavior.apply()在别处触发了一个错误,阻止了
    complete()
    函数正确完成并有效地禁用全局
    ajaxComplete()
    事件。修复此错误也修复了我的问题


    这意味着jQuery支持将本地和全局ajax事件结合起来。

    我还没有尝试过这一点,但它无疑会起作用。不过,这需要我对每个AJAX请求都使用这种结构,这并不能真正改进我的代码。错误现在已经修复,但是由错误的粘贴引起的。这并不能解决我的问题。