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

标签 javascript php jquery ajax

我的 php 代码 echo "joined"; 在一切正常工作后,如果出现错误,则回显其他消息,当所有内容提交时,我希望用户重定向到另一个页面,但事实并非如此t,当我单击“提交”时,它会回显“已加入”,所有内容都会被检查并提交到数据库,但我需要再次单击它才能重定向到另一个页面。

$("#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");
    }
});

最佳答案

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

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

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

POST 调用尚未完成,因此 if 尚未发生。

因此,您需要将此逻辑移至 $.post() 函数的“成功”回调中:

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

关于javascript - 提交验证后重定向到不同页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45203835/

相关文章:

javascript - debounceTime 使表单控件运行两次

javascript - 未应用动态渐变

php - 是否需要验证函数参数?

php - foreach循环,检查是否通过,显示错误数组

javascript - 如何使用 JavaScript 在浏览器中检查某个 CSS 功能?

javascript - 如何使用 Jquery 的 Javascript 从具有不同格式的嵌套 JSON 中提取值?

javascript - Angular 6 背景图像交叉淡入淡出动画

php - 统计与论坛相关的帖子总数 - PHP Logic

jQuery 序列化和反序列化

javascript - 从 javascript 内部抛出异常