1

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

4

4 回答 4

1

只需将重定向移动到 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');
于 2012-04-11T14:01:37.600 回答
0

这取决于您如何写入数据库。但是,在加载新页面时将数据传输到服务器的常用且推荐的方法是使用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. 返回请求的页面。

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

于 2012-04-11T14:01:23.193 回答
0

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

像这样的东西:

$.post('/savemydata/', { my: 'data' }, function(data) {
    //the Ajax post has been completed successfully, so now we redirect
    window.location.href = '/newpage/'
});
于 2012-04-11T13:47:14.753 回答
0

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

于 2012-04-11T13:46:01.260 回答