0

PHP を使用して単純なフォームをメールに送信しようとしていますが、実際の ajax 関数を動作させることができません。

これは次の形式です。

<form id="quick-booking-form" method="post" action="#">
                    <input type="text" name="mail" id="mail">
                    <textarea name="message" id="message">
                    </textarea>
                    <input type="submit" value="Send the Message" id="SendTheForm">
                </form>

これは、ajax を保持する別の Javascript 関数に送信されます。

$(function() {  
            //alert("page loaded");
            $('#quick-booking-form').submit(function(event) {
                event.preventDefault();
                alert("Start of function");
                var mail = $("#mail").val();
                var message = $("#message").val();
                alert("Mail: " + mail + " Message: " + message);

                $.ajax({
                    type: "POST",
                    url:"process.php",
                    data:{ 
                        "mail": mail,
                        "message": message, 
                        },
                    dataType: "text"
                }).success(function(result){
                    alert(result);
                    //next line: end of function
                    }) ;

                //next line: end of ajax
            });
        //next line: end of script
        }); 

この PHP ファイル (process.php) にデータを送信する必要があります。

$msg = $_POST['message'];
                $UserName = $_POST['mail'];

                $contact = "Booking Manager";
                $reply = "web-bookings@thesite.net";

                //Subject is always...
                $subject = "A message from ".$UserName;
                $from = $reply;

                //test data
                //$contactDetails = "test@test.net";


                // send message
                $message = "Message reads: ".$msg;
                //$to = "notify@test.com";
                $to = $_POST['mail'];
                //$headers = "From: " . $contact."\r\n"."Reply-To:".$reply;
                $headers = "From: " . $contact;
                mail($to, $subject, $message, $headers);
                echo "Mail Sent.";

何が起こるかは、フォームが送信されることです。次に、 validate.js で検証されます (コードは省略されます)。パスすると、フォーム データが process.php に送信されます。これにより、通知メッセージが notify@test.com に送信されます。

現在何が起こっているかというとalert("Start of Function")、アラートが発生し、正しい値を示すアラートも発生します。

そして、これはそれが得られる限りです。メール機能が起動していないようで、最後のアラートも表示されません。

4

2 に答える 2

1

あなたは正しいですが、いくつかの変更があります。これを試してください

$(function() {  
//alert("page loaded");
$('#quick-booking-form').submit(function(event) {
    event.preventDefault();
    alert("Start of function");
    var mail = $("#mail").val();
    var message = $("#message").val();
    alert("Mail: " + mail + "Message: " + message);

    $.ajax({
        type: "POST",
        url:"process.php",
        data:{ 
            "mail": mail,
            "message": message, 
            },
        dataType: "text",
        success: function(html) {
           alert(html);
        }
    });
    return false;

    //next line: end of ajax
    });
    //next line: end of script
  }); 

done の代わりに、preventDefault 関数と ajax の成功を使用します。

于 2013-08-28T16:18:05.400 に答える