联系表格发送带有空邮件字段的邮件 [英] Contact form sends mail with empty message field
问题描述
当我使用我的联系表格发送电子邮件时,textarea值不会发送,并且电子邮件中的message:字段始终为空。
$ b 声明输入变量手动在jQuery中,而不是使用序列化给出相同的结果。
textarea在form标签内,所以我不知道为什么它的值没有被拾取和张贴。
我试着给textarea一个id =message并在jquery中手动调用它: var text = $(#message ).val();
和 var text = $(textarea#message).val();
但它仍然没有发送。
我不知道我做错了什么。
以下是我的代码:
< form id =contactFormmethod =POST>
< div class =row small-margin>
< div class =col-md-4>
< i class =pe-7s-user pe-2x icon-contact>< / i>
< input name =nametype =textplaceholder =Name(required)required size =35>
< / div>
< div class =col-md-4>
< i class =pe-7s-mail pe-2x icon-contact>< / i>
< input name =emailtype =emailplaceholder =Email(required)required size =35>
< / div>
< div class =col-md-4>
< i class =pe-7s-link pe-2x icon-contact>< / i>
< input name =websitetype =textplaceholder =Websitesize =35>
< / div>
< / div>
< div class =row small-margin>
< div class =col-md-12>
<! - 消息字段 - >
<! - 提交按钮 - >
<! - 成功消息 - >
< div id =msgSubmitclass =alert alert-success text-center hidden>讯息已成功发送< / div>
< / div>
< / div>
< / form>
和JS:
$(#contactForm)。submit(function(event){
//取消表单提交
event.preventDefault();
console.log($ (this).serialize());
});
$ b $ .ajax({
type:POST,
url:php / form-process.php,
data: name =+ name +& email =+ email +& website =+ website +& message =+ text,
success:function(text){
if(文本==成功){
formSuccess();
}
}
});
function formSuccess(){
$(#msgSubmit).removeClass(hidden);
}
和PHP:
<?php
//设置变量
$ name = $ _POST ['name'];
$ email = $ _POST ['email'];
$ website = $ _POST ['website'];
$ message = $ _POST ['text'];
$ to ='novakim92@gmail.com';
$ subject ='Nixo的新留言';
//准备电子邮件正文文本
$ Body。=Name:;
$ Body。= $ name;
$ Body。=\\\
;
$ Body。=电子邮件:;
$ Body。= $ email;
$ Body。=\\\
;
$ Body。=网站:;
$ Body。= $ website;
$ Body。=\\\
;
$ Body。=Message:;
$ Body。= $ message;
$ Body。=\\\
;
//发送电子邮件
$成功=邮件($ to,$ subject,$ Body,From:。$ email);
if($ success){
echosuccess;
} else {
echo< p>出错了,请重试!< / p>;
}
?>
我在代码中发现问题:
来自textarea的值从来没有将其作为服务器端,因为您在PHP中执行此操作:
$ message = $ _POST ['text'];
您应该这样做以便从textarea获得值:
$ message = $ _POST ['message'];
这将解决您的问题:)。希望它有帮助。
When i send an email with my contact form the textarea value does not send and the "message:" field is always empty in the email.
Declaring the input variables manually in jquery instead of using serialize gives the same result.
The textarea is inside the form tags so i have no idea why its value is not picked up and posted.
I've tried giving the textarea an id="message" and calling it manually in jquery like: var text = $("#message").val();
and var text = $("textarea#message").val();
but it still doesn't send.
I don't know what i'm doing wrong. Please help.
Here is my code:
<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>
And 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" );
}
And 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>";
}
?>
I found the issue on your code:
the Values from textarea never made it the Server side, because you are doing this in your PHP:
$message = $_POST['text'];
You should do this in order to get the value from textarea:
$message = $_POST['message'];
This will solve your issue :). Hope it helps.
这篇关于联系表格发送带有空邮件字段的邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!