0

Web サイトで簡単なメール フォームを作成しました - jQuery ライブラリを使用して AJAX で処理します。

テストメールを受信して​​いるため、フォームが機能していることはわかっていますが、メールが送信されたことをユーザーに知らせる必要があります。現在、成功時に発生するイベントはありません。フォーム (div #contactform) を成功メッセージに置き換える必要があります。ここで何が欠けていますか?

注: フォームを送信した後、Safari でアクティビティを確認したところ、process.php スクリプトが表示されていましたが、「キャンセル済み」と表示されています。なぜこれを行っているのですか?また、成功メッセージが表示されない理由と関係があるのでしょうか?

これが私のスクリプトです:

HTML

<div id="contactform">
    <form id="churchcontact" action="" method="POST">

        <ul>
            <li>
                <label for="name">Name</label>
                <span class="error error_name">Please enter your name</span>
                <input id="name" type="text" name="name" />
            </li>

            <li>
                <label for="email">Email</label>
                <span class="error error_email">Please enter your email address</span>
                <input id="email" type="text" name="email" />
            </li>

            <li>
                <label for="message">Message</label>
                <span class="error error_message">Please write a message</span>
                <textarea id="message" name="message"></textarea>
            </li>

            <li>
                <input class="formsubmit" type="submit" value="Send" />
            <li>
        </ul>

    </form>
    </div>

jQuery

$(document).ready(function() {


    ////////////////////////////////////
    //// form submit                ////
    ////////////////////////////////////
    $('#churchcontact').submit(function() {


        ////////////////////////////////////
        //// validation                 ////
        ////////////////////////////////////
        $('.error').hide();

        //message
        var message = $('textarea#message').val();
        if(message == '') {
            $('.error_message').show();
            $('textarea#message').focus();
            var errors = 'true';
        }


        //email
        var email = $('input#email').val();
        var atpos = email.indexOf("@");
        var dotpos = email.lastIndexOf(".");
        if (atpos<1 || dotpos<atpos+2 || dotpos+2>=email.length || email == '') {
            $('.error_email').show();
            $('input#email').focus();
            var errors = 'true';
        }

        //name
        var name = $('input#name').val();
        if(name == '') {
            $('.error_name').show();
            $('input#name').focus();
            var errors = 'true';
        }




        if(errors) {
            return false;
        } else {


            ////////////////////////////////////
            //// process                    ////
            ////////////////////////////////////

            var dataString = 'name='+ name + '&email=' + email + '&message=' + message;
            //alert (dataString);return false;
            $.ajax({
                type: "POST",
                url: "sites/all/modules/custom/churchcontact/process.php",
                data: dataString,
                success: function() {
                    $('#contactform').html("success!");
                }
            });



        }

        return false;

    });



});

PHP (プロセス.php)

$name = $_POST['name'];
$email = $_POST['email'];
$msg = $_POST['message'];


$recipient = '[my email]';
$subject = 'Website Test';

$message = '
Name: ' . $name
. ', Email: ' . $email
. ', Message: ' . $msg;


mail($recipient, $subject, $message, $headers);
4

1 に答える 1

3

process.php にechoof を追加しますmail():

$res = mail($recipient, $subject, $message, $headers);
echo $res;        //if $res returns 1 that means mail was sent

アヤックスsuccess

...
success: function(data) {
    if(data == 1){
        message = "success!";
    }
    else{
        message = "Error";
    }    
    $('#contactform').empty().html(message);
   }
于 2012-07-29T02:40:31.213 に答える