Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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 为什么ajaxStop()没有在Internet Explorer中启动?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么ajaxStop()没有在Internet Explorer中启动?

Javascript 为什么ajaxStop()没有在Internet Explorer中启动?,javascript,jquery,Javascript,Jquery,这是我第一次使用ajax。我不知道ajaxStop发生在哪里。我使用ajaxStart显示加载图像,需要ajaxStop隐藏加载图像。请帮忙 我有这个代码来调用“PageOne”中的弹出窗口 在我的主页上,我有以下代码来检查ajax调用的开始和停止: $(document).ajaxStart(function() { alert('start'); }); $(document).ajaxStop(function() { alert('stop'); }); $(document

这是我第一次使用ajax。我不知道ajaxStop发生在哪里。我使用ajaxStart显示加载图像,需要ajaxStop隐藏加载图像。请帮忙

我有这个代码来调用“PageOne”中的弹出窗口

在我的主页上,我有以下代码来检查ajax调用的开始和停止:

$(document).ajaxStart(function() {
  alert('start');
});

$(document).ajaxStop(function() {
  alert('stop');
});

$(document).ajaxError(function() {
  alert('error');
});
它会提醒启动,但不会提醒停止:也不会出错


注意:启动和停止警报在Chrome上起作用,但在IE上不起作用。

ajaxStop
在所有当前AJAX请求完成后触发


您可以使用在所有当前AJAX请求完成后触发的
ajaxStop
阅读更多关于
ajaxStop


您可以使用

阅读有关
ajaxStop的更多信息。您可以以下列方式使用
.ajaxStop()

$(document).ajaxStop(function() {
    $('#loading-spinner').hide();
});
或者您可以将
:complete
回调添加到AJAX函数中,如下所示:

jQuery.ajax({
    url: path,
    success: function(data) {
      jQuery("#divPopup").load(path).dialog({
        modal: true,
        width: winWidth,
        height: winHeight,
        title: title,
        position: "center"
      });
    },
    complete: function() {
        // do something here when ajax stops
        // like hiding the spinner or calling another function
    }
  });
正如您在其中一条评论中提到的如何停止AJAX请求,下面介绍了如何:

var ajax1 = $.ajax({
    type: "POST",
    url: "some.php",
    ...
});

ajax1.abort()
通过执行以下操作,可以在中止之前检查特定AJAX请求是否正在运行:

if (ajax1) {
    ajax1.abort();
}
或者,在中止之前,您可以通过执行以下操作来检查是否有任何ajax请求正在运行:

var ajax_inprocess = false;
$(document).ajaxStart(function() {
    ajax_inprocess = true;
});
$(document).ajaxStop(function() {
    ajax_inprocess = false;
});

if (ajax_inprocess == true) {
    request.abort();
}
注意使用
.abort()
,因为它只会阻止客户端代码侦听响应,实际上不会停止服务器的工作。事实上,使用这个有几个主要的注意事项,所以一定要先阅读

更新问题的更新答案

对于IE问题,请尝试使用:

$(document).ajaxComplete(function() {
    // do something
})

而不是
ajaxStop()
ajaxComplete()
将在每次AJAX请求完成时触发,而不是在使用
ajaxStop()
完成所有请求时触发。也许会有帮助,也许不会。

您可以按以下方式使用
.ajaxStop()

$(document).ajaxStop(function() {
    $('#loading-spinner').hide();
});
或者您可以将
:complete
回调添加到AJAX函数中,如下所示:

jQuery.ajax({
    url: path,
    success: function(data) {
      jQuery("#divPopup").load(path).dialog({
        modal: true,
        width: winWidth,
        height: winHeight,
        title: title,
        position: "center"
      });
    },
    complete: function() {
        // do something here when ajax stops
        // like hiding the spinner or calling another function
    }
  });
正如您在其中一条评论中提到的如何停止AJAX请求,下面介绍了如何:

var ajax1 = $.ajax({
    type: "POST",
    url: "some.php",
    ...
});

ajax1.abort()
通过执行以下操作,可以在中止之前检查特定AJAX请求是否正在运行:

if (ajax1) {
    ajax1.abort();
}
或者,在中止之前,您可以通过执行以下操作来检查是否有任何ajax请求正在运行:

var ajax_inprocess = false;
$(document).ajaxStart(function() {
    ajax_inprocess = true;
});
$(document).ajaxStop(function() {
    ajax_inprocess = false;
});

if (ajax_inprocess == true) {
    request.abort();
}
注意使用
.abort()
,因为它只会阻止客户端代码侦听响应,实际上不会停止服务器的工作。事实上,使用这个有几个主要的注意事项,所以一定要先阅读

更新问题的更新答案

对于IE问题,请尝试使用:

$(document).ajaxComplete(function() {
    // do something
})


而不是
ajaxStop()
ajaxComplete()
将在每次AJAX请求完成时触发,而不是在使用
ajaxStop()
完成所有请求时触发。也许会有帮助,也许不会。

ajax停止仅在所有ajax请求完成运行后触发。如果代码中的任何地方都有一个重复的ajax请求,并且该请求在前一次停止之前启动,那么ajax停止将永远不会触发。@Eytch,请参阅我对IE问题的更新答案。ajax停止仅在所有ajax请求完成运行后触发。如果在代码中的任何地方有一个重复的ajax请求,并且该请求在前一个停止之前启动,则ajax停止将永远不会触发。@Eytch,请参阅我的IE问题更新答案。@KevinB Woops,修复了我的答案。我还没喝咖啡。谢谢你们的回复kehrk和@KevinB。我不记得有过另一个ajax调用,但在我的代码内部成功后,是否可能强制停止所有ajax调用?@Eytch,前提是您可以访问所有ajax调用,以便可以迭代调用它们。对每个调用都中止。@Eytch正是Kevin所说的。你可以把它们收藏起来,我相信这是最简单的方法。对不起,我的错。我刚刚检查了一下,发现我的代码在chrome上运行。IE出现问题。更新了我的问题。“但是IE的问题是什么?”凯文布·伍普斯,修正了我的答案。我还没喝咖啡。谢谢你们的回复kehrk和@KevinB。我不记得有过另一个ajax调用,但在我的代码内部成功后,是否可能强制停止所有ajax调用?@Eytch,前提是您可以访问所有ajax调用,以便可以迭代调用它们。对每个调用都中止。@Eytch正是Kevin所说的。你可以把它们收藏起来,我相信这是最简单的方法。对不起,我的错。我刚刚检查了一下,发现我的代码在chrome上运行。IE出现问题。更新了我的问题。但是IE的问题是什么嗨谢谢你的回复。。建议的代码似乎没有问题。但是,$(document).ajaxStop在IE中没有触发。我想知道当它在Chromethanks上工作时,会出现什么问题!它正在取得进展。但是,ajaxComplete在显示my弹出窗口之前被调用。如果可能的话,我需要加载所有弹出内容后隐藏加载图像Hi,感谢您的回复。。建议的代码似乎没有问题。但是,$(document).ajaxStop在IE中没有触发。我想知道当它在Chromethanks上工作时,会出现什么问题!它正在取得进展。但是,ajaxComplete在显示my弹出窗口之前被调用。如果可能的话,我需要在所有弹出内容加载后隐藏加载图像