2

少しのjquery、ajax、およびphpを使用してフォームを作成しました。ajax、検証、および php 処理はうまく機能します。送信後にフォームを非表示にする次のコードを思いつきましたが、これが良い方法かどうかはわかりません。アドバイスをお願いします。

ajax呼び出しを含むjsスクリプトの下

<script type="text/javascript">
$(document).ready(function(){
$("#submitContact").click(function() {
    $.ajax({
    cache: false,
    type: 'POST',
    url: 'form/process.php',
    data: $("#contact_form").serialize(),
    success: function(response) {
        $("#formstatus").hide().html(response).slideToggle(600);
    }
    });
});
});
</script>

上記のコードは、php を呼び出して検証し、div#formstatus を入力して、フォームが送信されたかどうかをユーザーに通知します。

私の process.php 内で、echo js スクリプトを使用してエラーが見つからない場合は、フォームを非表示にします。

// If no errors found echo succes message
if (!($formerrors)) :

    //Hide the form
    echo '<script type="text/javascript">
            $(document).ready(function(){
               $("#contact_form").hide();
            });
          </script>';

    // display success message
    echo '<div>
            Your message has been sent. <br />
            Thank you for contacting us!
          </div>';

    Etc....

要約する

と、この方法を使用してフォームを非表示にする必要がありますか? (動作するため)

注。私はjqueryとajaxが初めてです:)

4

3 に答える 3

2

表示の問題と機能の問題を分ければ、より扱いやすいコードになると思います。PHPについては、Walkerneoに同意します。

Javascript AJAX 成功ハンドラー

success: function(response) {

    var response = $.parseJSON(response);

        if(response.status === 'true') {

            $("#formstatus").hide().html(response.message).slideToggle(600);
            $("#contact_form").hide();

        } else {

            $("#formstatus").hide().html(response.message).slideToggle(600);

        }
}

PHP

if(!$formerrors) {
    exit(json_encode(array('status' => 'true', 'message' => 'Your message has been sent. \n Thank you for contacting us!')));

} else {

    $message = '<p class="error">' . implode('</p><p>', $formerrors) . '</p>';

    exit(json_encode(array('status' => 'false', 'message' => $message)));

}
于 2013-06-24T02:27:16.487 に答える