Javascript 为什么ajaxStop()没有在Internet Explorer中启动?
这是我第一次使用ajax。我不知道ajaxStop发生在哪里。我使用ajaxStart显示加载图像,需要ajaxStop隐藏加载图像。请帮忙 我有这个代码来调用“PageOne”中的弹出窗口 在我的主页上,我有以下代码来检查ajax调用的开始和停止: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
$(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弹出窗口之前被调用。如果可能的话,我需要在所有弹出内容加载后隐藏加载图像