我正在尝试通过ajaxStart,ajaxStop / ajaxComplete事件将jQuery UI模式对话框用作加载指示器。当页面触发时,Ajax处理程序会加载一些数据,并且模态对话框显示正常。但是,在Ajax事件完成时,它永远不会隐藏或关闭对话框。这是返回本地服务器的一小部分代码,因此实际的Ajax事件非常快。
这是我的模态div的实际代码:
$("#modalwindow").dialog({
modal: true,
height: 50,
width: 200,
zIndex: 999,
resizable: false,
title: "Please wait..."
})
.bind("ajaxStart", function(){ $(this).show(); })
.bind("ajaxStop", function(){ $(this).hide(); });
Ajax事件只是一个普通的$.ajax({})
GET方法调用。
根据Google和Google的一些搜索,我尝试更改ajaxStop处理程序以使用$("#modalwindow").close()
,$("#modalwindow").destroy()
等。(此处引用的#modalwindow是为了给出明确的上下文)。
我也尝试过使用标准$("#modalwindow").dialog({}).ajaxStart(...
。
我应该将事件绑定到不同的对象吗?或者在$.ajax()
完整事件中调用它们?
我应该提一下,我正在测试最新的IE8,FF 3.6和Chrome。所有都具有相同/相似的效果。
答案 0 :(得分:6)
找到答案:
$("#modalwindow").dialog({
modal: true,
height: 50,
width: 200,
zIndex: 999,
resizable: false,
title: "Please wait..."
})
.bind("ajaxStart", function(){
$(this).dialog("open"); })
.bind("ajaxStop", function(){
$(this).dialog("close");
});
自我注意:RTFM。
当然,在所有这一切中,现在我意识到它打开和关闭的速度很快就没用了。哦,希望有人会觉得这很有帮助。
答案 1 :(得分:1)
"Whenever an Ajax request completes, jQuery checks whether there are any other outstanding Ajax requests."您是否同时运行其他AJAX请求?您需要使用ajaxComplete
或.ajax()
的回调选项来完成一次完成。