0

現在、このサイトに連絡先フォームがあり、php の結果から ajax の結果に移行しようとしています。このコードで mail.php ファイルを使用しました。

<?php
 $firstname = $_POST['firstName'];
 $lastname = $_POST['lastName']; 
 $email = $_POST['email'];
 $tel1 = $_POST['tel1'];
 $tel2 = $_POST['tel2'];
 $tel3 = $_POST['tel3'];
 $reason = $_POST['reason'];
 $message = $_POST['text'];
 $formcontent="From: $firstname $lastname \n Email address: $email \n Telephone Number: $tel1 $tel2 $tel3 \n Reason: $reason \n Message: $message";
 $recipient = "ilanbiala@ilanshomekitchen.x10.mx";
 $subject = "Contact Form";
 $mailheader = "From: $email \r\n";
 mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
 echo "<script>alert('Thank you!');</script>";
 ?>

このphpファイルは、コンタクトフォームの結果を電子メールで送信しました。ただし、ページが再読み込みされ、空白のページに警告ボックスが表示されましたが、これは意図したものではありません. jquery ajax関数を使用して、ajaxが情報をphpファイルに送信してメールで送信できるようにすることを検討しています.

お問い合わせフォームは、次の ajax 関数を介して送信されます。

function submitForm(form) {
    var form = $("form").submit(function() {
        var formData = new FormData(form);
        console.log("formData");
        var XHR;
        if (window.XHMLHttpRequest){XHR = new XHMLHttpRequest();}
        else {XHR = new ActiveXObject("Microsoft.XMLHTTP");}
        XHR.open("POST","mail.php",true);
        console.log("XHR opened.");
        XHR.onreadystatechange = function(e) {
            if (this.readyState == 4 && this.status == 200) {
                XHR.send(formData);
                console.log("Sent formData.");
            }
        }
    });
}
4

3 に答える 3

2

jQuery の .ajaxを使用できます。

$.ajax({
        type: "POST",
        url: "mail.php",
        data: { firstname: nameVar, email: emailVar............ }
    }).done(function( msg ) {
        alert( msg );
    });
于 2013-01-20T05:47:05.993 に答える
1

リンクしたページでは、フォームのIDがformであるため、サンプルコードでそれを使用します。

JavaScriptコード

$(document).ready(function(){
    $('#form').submit(function(e){
        e.preventDefault();

        $.post($(this).attr('action'), $(this).serialize(), function(data) {
            // do whatever with the data returned
            console.log(data);
        });
    }, 'text');
});

これは非常に単純な例であり、<form>HTMLのタグにaction属性を追加する必要があります(この場合はそうなりますmail.php)。

PHPコード

<?php

 $firstname = $_POST['firstName'];
 $lastname = $_POST['lastName']; 
 $email = $_POST['email'];
 $tel1 = $_POST['tel1'];
 $tel2 = $_POST['tel2'];
 $tel3 = $_POST['tel3'];
 $reason = $_POST['reason'];
 $message = $_POST['text'];
 $formcontent="From: $firstname $lastname \n Email address: $email \n Telephone Number: $tel1 $tel2 $tel3 \n Reason: $reason \n Message: $message";
 $recipient = "ilanbiala@ilanshomekitchen.x10.mx";
 $subject = "Contact Form";
 $mailheader = "From: $email \r\n";

 if(mail($recipient, $subject, $formcontent, $mailheader)) {
     echo 'Thank you!';
 } else {
     echo 'Error!';
 }

?>

たとえば、JSONを使用してさらに凝ったことを試みることもできますが、この例では、非常に単純にしています。

于 2013-01-20T06:02:08.130 に答える
0

すでに述べたように、単純な AJAX 呼び出しを使用して目的を達成できます。ただし、代わりに

echo "<script>alert('Thank you!');</script>";

私は次のようなことを提案します:

header('Content-type: application/json');
if(mail($recipient, $subject, $formcontent, $mailheader)) {
    echo "{'msg':'email has been sent'}";
} else {
    echo "{'error':'there was an error sending email'}";
}

次に、AJAX 呼び出しで、返された JSON オブジェクトを取得し、ページに成功/エラー メッセージを表示できます。

于 2013-01-20T06:04:00.760 に答える