使用jQuery在页面刷新之前显示消息

时间:2016-09-07 12:35:09

标签: javascript jquery

我想在页面刷新之前显示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秒后页面重新加载。但是当如果情况开启时,页面会重新加载,但是消息不会显示。

我该如何解决这个问题?

2 个答案:

答案 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");
    }
});