我想在页面刷新之前显示ajax结果消息,但是出了点问题。我的代码是这样的:
$.ajax({
cache: false,
type: "POST",
url: "@(Url.RouteUrl("DummyRequest"))",
success: function (data) {
if (data.Success) {
$('#dummy-notification').text(data.Result).fadeIn("slow").delay(3000).fadeOut("slow");
setInterval(function () {
location.reload();
}, 5000);
}
else {
$('#dummy-notification').text(data.Result).fadeIn("slow").delay(3000).fadeOut("slow");
/*setInterval(function () {
location.reload();
}, 5000);*/
}
},
error: function (xhr, ajaxOptions, thrownError) {
$('#dummy-notification').text("Something went wrong.").fadeIn("slow").delay(3000).fadeOut("slow");
}
});
我的代码在 else 情况下正常运行。当我尝试时,会显示消息,然后在5秒后页面重新加载。但是当如果情况开启时,页面会重新加载,但是消息不会显示。
我该如何解决这个问题?
答案 0 :(得分:0)
尝试这样的事情:
setTimeout()
不同之处在于fadeOut()
在close-on-select
执行完毕后才会被调用。
答案 1 :(得分:0)
它取决于服务器的响应时间..所以如果来自服务器的响应迟到则不能正常工作..所以你必须等待AJAX响应然后你必须显示弹出和重定向。所以在你的ajax请求中使用ajax选项async: false
。如下所述
$.ajax({
cache: false,
async: false,
type: "POST",
url: "@(Url.RouteUrl("DummyRequest"))",
success: function (data) {
if (data.Success) {
$('#dummy-notification').text(data.Result).fadeIn("slow").delay(3000).fadeOut("slow");
setInterval(function () {
location.reload();
}, 5000);
}
else {
$('#dummy-notification').text(data.Result).fadeIn("slow").delay(3000).fadeOut("slow");
/*setInterval(function () {
location.reload();
}, 5000);*/
}
},
error: function (xhr, ajaxOptions, thrownError) {
$('#dummy-notification').text("Something went wrong.").fadeIn("slow").delay(3000).fadeOut("slow");
}
});