jQuery成功后,重新加载页面,然后追加

jQuery on success, reload the page and then append?

本文关键字:加载 然后 追加 成功 新加载 jQuery      更新时间:2023-09-26

我有以下代码:

$.ajax({
        type: 'GET',
        url: 'edit_slides.php',
        data: { user_id: user_id },
        success: function() { 
            location.reload(); 
            $('#messageContent').append('<p>success</p>'); 
        }
    });

现在发生的情况是,它非常快速地进行追加,然后重新加载,从而丢失消息。

现在,我可以去掉重新加载,它会附加,但为了使我的更改生效,需要重新加载页面。

我还能做什么吗?我想在重新加载页面后显示一条成功消息。

谢谢!

location.reload()将重新加载您的页面,这将向您的服务器创建一个新的请求,然后浏览器加载响应。您可以在消息的查询字符串中添加一个参数,例如

$.ajax({
        type: 'GET',
        url: 'edit_slides.php',
        data: { user_id: user_id },
        success: function() { 
            window.location = "?message=success";
        }
    });

然后在服务器端代码中,如果参数存在,则可以显示消息。在ASP.NET MVC中,它看起来是这样的:

@if(Request["message"] == "success")
{
    <p>success</p>
}

如果您没有可用的服务器端脚本,您也可以使用javascript解析查询字符串。

在重新加载页面之前可能会有一些延迟。试试这个

$.ajax({
        type: 'GET',
        url: 'edit_slides.php',
        data: { user_id: user_id },
        success: function() { 
            $('#messageContent').append('<p>success</p>'); 
            setTimeout(function(){
               location.reload(); 
            }, 500);
        }
    });

将其发送到一个位置,但url中有一个哈希来表示成功:

$.ajax({
    type: 'GET',
    url: 'edit_slides.php',
    data: { user_id: user_id },
    success: function() { 
        window.location = window.location + "#success";
    }
});

现在,当页面加载时,检查哈希:

$(document).ready(function(){
    if(window.location.hash) {
        $("#messageContent").append("<p>success</p>");
    }