2017-07-20 114 views
0

我的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"); 
    } 
}); 
+0

什么动作脚本在你的形式?它有什么作用? – user10089632

+0

@ Lambda7当我点击myForm中的提交按钮后,它会检查用php提交的数据,根据是否有错误或所有事情都正确完成,回显一条消息,并将消息加载到ID =“ack” –

回答

2

你的问题是,$.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"); 
     } 
    } 
); 
相关问题