在重定向之前写入数据库

Write into database before redirecting

本文关键字:数据库 重定向      更新时间:2023-09-26

有一个按钮,当它被点击(html onclick)时,它会重定向到另一个页面。在javascript中有一个函数,当单击此按钮时,它将一些新值写入数据库表。我的问题是:重定向发生在数据写入数据库之前,因此在新页面上我仍然具有旧值。有没有一种简单的方法来反转这些步骤(重定向,写入数据库)?感谢您的建议

只需将重定向移动到 ajax 调用的回调中,假设你有

<a href="#" id="savedata">Save data</a>
<script type="text/javascript">
    $(document).ready(function() {
        $("#savedata").click(function() {
            $.post('/savemydata/', { mydata: 'data' }, function(data) {
                window.location.href = '/newpage/'
            });
            return false;
        });
    });
</script>

如果按钮确实提交了表单,那么您可能希望隐藏该按钮,然后在帖子发布后只需添加以下内容即可触发它:

$("#buttonID").trigger('click');
使用 ajax

写入数据,然后在 ajax 的回调中加入重定向。这将确保在将信息写入数据库之前不会发生重定向。查看一些代码以做出更好的答案会有所帮助。此外,如果你不熟悉 ajax,这很可能最好用 jQuery 来完成。

将重定向到新页面的代码移动到 ajax 保存请求的回调中。

像这样:

$.post('/savemydata/', { my: 'data' }, function(data) {
    //the Ajax post has been completed successfully, so now we redirect
    window.location.href = '/newpage/'
});

这取决于您写入数据库的方式。但是,在加载新页面时将数据传输到服务器的常用和推荐方法是使用 URL 参数。如果您使用类似的东西

<form action="/next.php" method="POST">
 <input type="hidden" name="data" value="values" />
 <button type="submit" value="Next Page" />
</form>

<a href="/next.php?data=values">Next Page</a>
// also simply usable with
window.location = "/next.php?data=values";

你可以肯定

  1. 数据到达服务器,
  2. 可以在之前处理(写入数据库)
  3. 返回请求的页面。

您也可以使用饼干。只需将您的数据值写入 document.cookie ,它们就会以与请求新页面相同的请求传输到服务器。