$("#Save").click(function () {
var lastForm = $(".frm_product_group").size() - 1;
$(".frm_product_group").each(function (index) {
$.post("save_new_product_group.php", $(this).serialize(), function (data) {
if (data == false) {
alert("Error: Try again");
}
});
if (index == lastForm) {
window.location.href = "product_group.php";
}
});
});
在上面的代码中,窗口没有jquery.post(...)重定向到product_group.php。如果我在window.location ...行之前使用alert(...),那么jquery.post()更新工作正常。我想这是jquery响应时间的问题。我无法理清。
请帮忙。
答案 0 :(得分:1)
您需要将位置更改放在帖子的回调中。在帖子有机会完成之前,它正在改变位置(重定向)。
$("#Save").click(function () {
var numForms = $(".frm_product_group").length;
$(".frm_product_group").each(function () {
$.post("save_new_product_group.php", $(this).serialize(), function (data) {
if (data == false) {
alert("Error: Try again");
return false; // Prevent more posts from being sent after error
} else {
numForms--;
if (numForms === 0) {
window.location.href = "product_group.php";
}
}
});
});
});
答案 1 :(得分:0)
您可能缺少event.preventDefault调用,因此保存按钮不会发布表单
$("#Save").click(function (e) {
e.preventDefault();
var lastForm = $(".frm_product_group").size() - 1;
答案 2 :(得分:0)
我在另一天遇到了同样的问题,是的,这是一个jquery工作太快的问题。我的解决方案是使用setTimeOut()延迟调用重定向。 你的代码看起来像那样:
$("#Save").click(function () {
var lastForm = $(".frm_product_group").size() - 1;
$(".frm_product_group").each(function (index) {
$.post("save_new_product_group.php", $(this).serialize(), function (data) {
if (data == false) {
alert("Error: Try again");
}
});
if (index == lastForm) {
setTimeout("foo",1000);
}
});
});
function foo()
{
window.location.href = "product_group.php";
}