連絡フォームでメールを送信すると、textareaの値は送信されず、メールの「メッセージ:」フィールドは常に空になります。連絡先フォームが空のメッセージフィールドでメールを送信する
serializeを使用する代わりに入力変数をjqueryで手動で宣言すると、同じ結果が得られます。
テキストエリアがフォームタグの内側にあるので、その値が選択されて掲載されない理由がわかりません。
私はtextareaにid = "message"を与えて、var text = $("#message").val();
とvar text = $("textarea#message").val();
のようにjqueryで手動で呼び出そうとしましたが、まだ送信しません。
私は何が間違っているのか分かりません。助けてください。
<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 = '[email protected]';
$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>";
}
?>
メッセージフォーム要素の名前は "message"で、AJAX呼び出しで "text"を使用します: ""&message = "+ text"。 –
私はテキストでメッセージを置き換えました。そして、今私は電子メールで "message:udefined"を取得します。 – Novakim