表单帮助-获得PHP脚本通过ajax发送的电子邮件数据


FORM HELP - Getting PHP script to email data sent in via ajax

非常新,所以抱歉,我的问题是基本的,但它难住了我几个小时。

我有一个联系人表单,它使用一点AJAX POST到我的PHP文件。我遇到的问题是,当我试图让PHP通过电子邮件发送数据给我自己时,它没有读取POST值。当我在没有JS/AJAX post方法的情况下测试PHP时,它正在工作,但是为了停止页面刷新,我使用了AJAX选项。现在我已经添加了ajax,电子邮件结果没有显示数据(我可以检查并看到表单数据被填充,只是不清楚为什么它不填充在电子邮件):

Name:   
Email:   
Message:

关于为什么我的邮件服务器只接收文本而不接收POST的任何指导

开放,

<form data-parsley-validate action="./assets/contactform.php" method="POST">
        <div class="formRow">
                    <label for="name" class="obscure">Name</label>
                    <input type="text" name="nameInput" id="name" placeholder="Name" required data-parsley-error-message="Please enter your name"></input>
                </div>
                <div class="formRow">
                    <label for="email" class="obscure">Email</label>
                    <input name="emailInput" id="email" type="email" placeholder="Email" required data-parsley-error-message="Please enter a valid email address"></input>
                </div>
                <div class="formRow">
                    <label for="message" class="obscure">Message</label>
                    <textarea name="messageInput" id="message">Message</textarea>
                </div>
<input type="submit" name="submit"></input>
PHP脚本:

<?php
    $to      = 'hello@kymlangford.com';
    $subject = 'Post from your website';
    $message = "Name: " . $_POST['nameInput'] . "'n Email: " . $_POST['emailInput'] . "'n Message: " . $_POST['messageInput'];
    $headers = 'From: hello@kymlangford.com' . "'r'n" .
    'Reply-To: ' . $_POST['emailInput'] . "'r'n" .
    'X-Mailer: PHP/' . phpversion();
    mail($to, $subject, $message, $headers);
    exit;
?>

$(函数(){

$.ajax({
        type: 'POST',
        url: './assets/contactform.php',
        data:  { name : $('input[name=nameInput]').val(), 
                 email : $('input[name=emailInput]').val(),
                message : $('textarea[name=messageInput]').val() 
               },
        dataType: 'json'
})
event.preventDefault();

});

});

——更新08/07/2014

下面是解决我的问题的jquery代码

// get the data from the form 
$('form').submit(function(event){
    var fdata = $(this).serializeArray();
    fdata.push({ name: 'submit', value: true });
    $.post('./assets/contactform.php', fdata, function (data) { 
        alert('Data Loaded:' + data); });
        console.log(fdata);
        event.preventDefault(); 
    });
});

我认为你可以使用jquery,就像ajax一样。

下面是HTML代码

<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
  $('#submit').click(function(){
    $.post("sendemail.php", $("#contactform").serialize(), function(response) 
    {
       $('#message').html(response);
    });
  return false;
  });
});
</script>
</head>
<body>
<p> 
<form action="" method="post" id="contactform" >
<label for="name">Name:</label><br />
<input type="text" name="name" id="name" /><br />
<label for="email">Email:</label><br />
<input type="text" name="email" id="email" /><br />
<label for="emailcontent">Email Content:</label><br />
<textarea name="emailcontent" id="emailcontent"></textarea><br />
<input type="button" value="Send Email" id="submit" /><div id="message"> </div>
</form>
</p>
</body>
</html>

这是PHP代码,保存为' sendmail . PHP ' filename

$name = $_POST['name'];
$email = $_POST['email'];
$emailcontent = $_POST['emailcontent'];
$to = 'youremail@domain.com';
$subject = 'the subject';
$emailcontent = 'FROM: '.$name.' Email: '.$email.'Content: '.$emailcontent;
$headers = 'From: youremail@domain.com' . "'r'n";
mail($to, $subject, $message, $headers);
echo "Your email was sent!";