有一个按钮,当它被点击(html onclick)时,它会重定向到另一个页面。在 javascript 中有一个函数,当单击此按钮时,它会将一些新值写入数据库表。我的问题是:重定向发生在数据写入数据库之前,所以在新页面上我仍然有旧值。有没有一种简单的方法可以反转这些步骤(重定向、写入数据库)?感谢您的意见
问问题
383 次
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";
你可以确定
- 数据到达服务器,
- 之前可以处理(写入数据库)
- 返回请求的页面。
您也可以使用 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 回答