调用每个不正常工作的jquery

时间:2010-12-11 12:31:01

标签: jquery

$("#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响应时间的问题。我无法理清。

请帮忙。

3 个答案:

答案 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";
    }