【发布时间】:2020-01-24 12:46:29
【问题描述】:
我正在使用带有 ajax 的 Jquery Dialog。我试图在单击按钮后实现弹出对话框(ajax.always),然后在完成后替换为另一个对话框(ajax.done)。
我有以下代码:
$("#dialog").dialog({
autoOpen: false,
modal: true,
show: "blind",
hide: "explode",
resizable: false,
draggable: true,
closeOnEscape:false,
width: 180,
height: 200,
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
});
$("#dialog2").dialog({
autoOpen: false,
modal: true,
show: "blind",
hide: "explode",
resizable: false,
draggable: true,
closeOnEscape:false,
width: 180,
height: 200,
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
});
.....
$.ajax({
url: '****',
type: 'POST',
data: values,
})
.done(function() {
$("#dialog").dialog("close");
$("#dialog2").load('pages/success_page.php' , function() {
$("#dialog2").dialog("open");
setTimeout(function(){ $('#dialog2').dialog("close"); }, 3000);
});
})
.fail(function() {
console.log("error");
})
.always(function() {
$("#dialog").load('pages/loading_page.php' , function() {
$("#dialog").dialog("open");
});
});
});
但是,此解决方案不起作用。理想情况下,我正在寻找解决方案,其中 .always 将打开带有 loading.php 页面的对话框,并且 .done 将用 success.php 替换所述对话框的内容,然后在几秒钟后关闭。
有人可以帮忙吗?
谢谢
【问题讨论】:
-
.always在 ajax 完成后调用(不管成功/错误)。所以为时已晚。您正在寻找全局 ajax 事件处理程序:api.jquery.com/category/ajax/global-ajax-event-handlers -
您可能还想查看一种侵入性较小的成功“弹出”方法 - 特别是类似于 toastr 的方法,它将弹出一条消息并(可选)在特定时间后关闭它或让用户关闭它自己:github.com/CodeSeven/toastr
标签: jquery ajax dialog jquery-ui-dialog