簡體   English   中英

聯系人表單發送帶有空消息字段的郵件

[英]Contact form sends mail with empty message field

當我通過聯系表單發送電子郵件時,textarea值不會發送,並且“ message:”字段在電子郵件中始終為空。

在jquery中手動聲明輸入變量,而不是使用序列化會得到相同的結果。

textarea在表單標簽內,所以我不知道為什么它的值沒有被提取和發布。

我試着給textarea一個id =“ message”並在jquery中手動調用它,例如: var text = $("#message").val(); var text = $("textarea#message").val(); 但它仍然不發送。

我不知道我在做什么錯。 請幫忙。

這是我的代碼:

    <form id="contactForm" method="POST">
            <div class="row small-margin">
                <div class="col-md-4">
                    <i class="pe-7s-user pe-2x icon-contact"></i>
                    <input name="name" type="text" placeholder="Name(required)" required size="35">
                </div> 
                <div class="col-md-4">
                    <i class="pe-7s-mail pe-2x icon-contact"></i>
                    <input name="email" type="email" placeholder="Email(required)" required size="35">
                </div>
                <div class="col-md-4">
                    <i class="pe-7s-link pe-2x icon-contact"></i>
                    <input name="website" type="text" placeholder="Website" size="35">
                </div>
            </div>
            <div class="row small-margin">
                <div class="col-md-12">
                    <!-- Message Field -->
                    <textarea name="message" placeholder="Your Message(required)" required></textarea>
                    <!-- Submit Button -->
                    <button id="submit" name="submit" type="submit" class="button" value="submit">SEND MESSAGE</button>
                    <!-- Success Message -->
                    <div id="msgSubmit" class="alert alert-success text-center hidden">Message Sent Successfully</div>
                </div>
            </div>
</form>

和JS:

$("#contactForm").submit(function(event){
// cancels the form submission
event.preventDefault();
console.log( $( this ).serialize() );
});


    $.ajax({
        type: "POST",
        url: "php/form-process.php",
        data: "name=" + name + "&email=" + email + "&website=" + website + "&message=" + text,
        success : function(text){
            if (text == "success"){
                formSuccess();
            }
        }
    });
}
function formSuccess(){
    $( "#msgSubmit" ).removeClass( "hidden" );
}

和PHP:

<?php
    // Set variables
    $name = $_POST['name'];
    $email = $_POST['email'];
    $website = $_POST['website'];
    $message = $_POST['text'];

    $to = 'novakim92@gmail.com'; 
    $subject = 'New Message from Nixo';

    // Prepare email body text
    $Body .= "Name: ";
    $Body .= $name;
    $Body .= "\n";

    $Body .= "Email: ";
    $Body .= $email;
    $Body .= "\n";

    $Body .= "Website: ";
    $Body .= $website;
    $Body .= "\n";

    $Body .= "Message: ";
    $Body .= $message;
    $Body .= "\n";

    // Send email
    $success = mail($to, $subject, $Body, "From:".$email);

    if ($success){
       echo "success";
    }else{
        echo "<p>Something went wrong, please try again!</p>";
    }
?>

您的變量命名不一致。

在HTML表單中,您正在使用message作為名稱屬性。 但是在您進行AJAX調用時,在PHP $_POST-GLOBAL您正在尋找一個名為text的變量。

我在您的代碼中發現了問題:

textarea中的值從未使它成為服務器端,因為您是在PHP中執行此操作的:

$message = $_POST['text'];

您應該這樣做以便從textarea獲取值:

$message = $_POST['message'];

這將解決您的問題:)。 希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM