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

表单帮助-获取PHP脚本以通过ajax发送电子邮件数据,php,ajax,forms,post,submission,Php,Ajax,Forms,Post,Submission,非常新的,所以道歉是我的问题是基本的,但它困扰了我几个小时 我有一个联系人表单,它使用了一些AJAX来发布到我的PHP文件中。我遇到的问题是,当我试图让PHP通过电子邮件将数据发送给我自己时,它没有读取POST值。当我在没有JS/ajaxpost方法的情况下测试PHP时,它是可以工作的,但是为了停止页面刷新,我使用了AJAX选项。现在我已经在中添加了ajax,电子邮件结果并没有显示我可以检查并查看表单数据是否已填充的数据,只是不清楚为什么它没有在电子邮件中填充: 关于为什么我的邮件服务器只接收文

非常新的,所以道歉是我的问题是基本的,但它困扰了我几个小时

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

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

在表单上打开和关闭HTML:

})

})

-更新日期:2014年7月8日-

下面是解决我问题的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>

问题出在js代码上,尤其是在数据变量中。看看这个,在javascript中,您可以在php nameInput中使用键名,以此类推。他们必须是一样的!另外,用于调试ajax消息。@Athafoud-谢谢!这个链接帮了大忙。我在搜索时找不到它,因为我显然问错了问题。谢谢大家!@machineaddict-不清楚钥匙匹配是什么意思?我以前从未使用过PHP。。。但是一旦我更新了我的JS,上面的脚本就可以完美地工作了。为了将来参考,语法的哪一部分是错误的?@user3812602:在ajax中,您发送的名称称为name,在php中,您使用$\u POST['nameInput'],其中应该是$\u POST['name']。知道了?形式上的Java实际上是javascript,它们是两种独立的编程语言。谢谢!问题是我的Java,现在已经全部修复。在PHP中,首先将信息放入变量是更好的做法吗?在我的版本中,我只是将内容直接放在$emailcontent中。但我在您的示例中看到它是这样声明的,只是想知道它的优点是什么?对于任何感兴趣的人来说,这里是我需要的标记://从$'form'.submitfunctionevent{var fdata=$this.serializeArray;fdata.push{name:'submit',value:true}表单获取数据;$.post'/assets/contactform.php',fdata,函数数据{alert'加载的数据:'+data;};console.logfdata;event.preventDefault;};我不确定这样做有什么好处。但是,如果我想添加更多函数来处理内容,比如通过PHP的htmlspecialchars函数来验证变量,比如$emailcontent=htmlspecialchars$_POST['emailcontent'],我认为这有助于使代码易于阅读;
<?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();
// 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(); 
    });
});
<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>
$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!";