提交验证后重定向到不同的页面

时间:2017-07-20 01:57:11

标签: javascript php jquery ajax

一切正常后我的php代码echo "joined";如果出现错误就回复其他消息,当提交所有内容时我希望用户被重定向到另一个页面但是当我点击时它没有提交它回声"加入"一切都被检查并提交到数据库,但我需要再次点击它以重定向到另一页。

$("#submit").click(function() {
    $.post($("#myForm").attr("action"),
        $("#myForm :input").serializeArray(),
        function(info) {
            $("#ack").empty();
            $("#ack").html(info);
        });
    $("#myForm").submit(function() {
        return false;
    });
    var ack = $("#ack").text();
    if (ack.match('joined')) {
        window.location.replace("user-login.php");
    }
});

1 个答案:

答案 0 :(得分:2)

您的问题是$.post()是一个异步函数,并且您将代码视为同步。

换句话说,当浏览器到达这一行时:

var ack = $("#ack").text();
if (ack.match('joined')) {
    window.location.replace("user-login.php");
}

POST来电尚未结束,因此if没有发生。

所以你需要在$.post()函数的'success'回调中移动这个逻辑:

$.post(
    $("#myForm").attr("action"),
    $("#myForm :input").serializeArray(),
    function(info) {
        $("#ack").empty();
        $("#ack").html(info);
        if(info.match('joined')) {
            window.location.replace("user-login.php");
        }
    }
);