【发布时间】:2009-10-08 16:02:02
【问题描述】:
我有一个执行 jquery AJAX 帖子的脚本,然后应该重定向到不同的页面。问题是它有时会在帖子完成之前重定向。似乎有几个解决方案,但我无法让它们中的任何一个工作。谢谢你的帮助! 这是我的代码:
$.post("cart.php", { 'products[]':postvalues }, function(data) { });
location.href="index.php";
【问题讨论】:
我有一个执行 jquery AJAX 帖子的脚本,然后应该重定向到不同的页面。问题是它有时会在帖子完成之前重定向。似乎有几个解决方案,但我无法让它们中的任何一个工作。谢谢你的帮助! 这是我的代码:
$.post("cart.php", { 'products[]':postvalues }, function(data) { });
location.href="index.php";
【问题讨论】:
您需要将location.href 放入回调函数中。
$.post("cart.php", { 'products[]':postvalues }, function(data, status) {
// if you don't want to redirect if it doesn't work, you can check if status == 'success'
location.href = "index.php";
});
有关详细信息,请参阅jQuery.post 文档。
尽管如此,我必须问:如果您仍然要重定向,为什么要通过 ajax 来做呢?
您是否出于某种原因不想以正常方式简单地提交表单?如果没有,你可能应该改走那条路。
【讨论】:
成功时在回调函数中进行重定向:
$.post("cart.php", { 'products[]':postvalues }, function(data, textStatus) {
if (textStatus == "success") {
location.href="index.php";
}
});
请参阅jQuery.post 了解其他状态以实现进一步的错误处理。
【讨论】:
您的问题是您的位置更改没有等待您的发布操作完成......因为发布使用 Ajax,它在发送请求后将控制权传递给下一行。
要解决此问题,请执行以下操作:
$.post("cart.php", { 'products[]':postvalues }, function(data) {
// do stuff with data
location.href="index.php";
});
【讨论】:
如果你想去同一个页面你可以做window.location.reload(),如果你想滥用JS你可以使用加载到一个div,只加载内容
【讨论】: