2016-11-11 93 views
0

当我用我的联系表格发送电子邮件时,textarea值不会发送,并且电子邮件中的“message:”字段始终为空。联系表格发送带空信息字段的邮件

在jquery中手动声明输入变量而不是使用序列化给出了相同的结果。

textarea是在窗体标签内,所以我不知道为什么它的价值没有拿起和张贴。

我试着给textarea一个id =“消息”,并在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 = '[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>"; 
    } 
?> 
+0

那么..消息表单元素的名称是“消息”,你在你的AJAX调用中使用“text”:“”&message =“+ text,”。 –

+0

我用邮件替换了文本,现在我在电子邮件中收到了“邮件:udefined”。 – Novakim

回答

0

我发现你的代码的问题:

从textarea的价值观没有把它的服务器端,因为你正在做这在你的PHP:

$message = $_POST['text']; 

你应该为了做到这一点,以从textarea获得价值:

$message = $_POST['message']; 

这将解决您的问题:)。希望能帮助到你。

0

你的变量命名是不一致的。

在您的HTML表单中,您使用message作为name属性。 但是,在你是AJAX调用和在PHP $_POST-GLOBAL你正在寻找一个变量叫text

+0

好的,我用php和ajax调用中的消息替换了文本,现在我在电子邮件中收到了“消息:未定义”。 – Novakim