2017-07-20 14 views
0

私のPHPコードecho "joined";すべて正常に機能した後、エラーが発生した場合、すべてが送信されたときに他のメッセージをエコーし​​ます。ユーザーは別のページにリダイレクトされますが、私はそれを提出するechosをクリックする "参加"すべてがチェックされ、データベースに提出が、私はそれをもう一度クリックして他のページにリダイレクトする必要があります。はサブミット検証後に別のページにリダイレクトされます

$("#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のsubmitボタンを押した後、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"); 
     } 
    } 
); 
関連する問題