使用mail()的jQuery AJAX表单PHP脚本发送电子邮件,但HTML表单中的POST数据未定义

伙计们,谢谢花时间看。 我正在使用jQuery创建一个非常基本的AJAX联系表单。 电子邮件发送,但在打开电子邮件时没有POST数据,所以我只是获取我在PHP脚本中定义的字符串。 在我手机的电子邮件客户端上,电子邮件的内容字面上显示为“未定义”。 我尝试添加不同类型的标头数据无济于事,以及PHP mail()函数的许多变体。

我非常愿意为简单的AJAX表单采用更简单的解决方案,所以提前感谢任何新方法。

这是表格:

jQuery AJAX:

 $(function() { $("#contact .button").click(function() { var name = $("#form_name").val(); var email = $("#form_email").val(); var text = $("#msg_text").val(); var dataString = 'name='+ name + '&email=' + email + '&text=' + text; $.ajax({ type: "POST", url: "email.php", data: dataString, success: function(){ $('.success').fadeIn(1000); } }); return false; }); }); 

PHP脚本(外部文件’email.php’):

  

无需创建查询字符串。 只需将您的值放在一个对象中,jQuery将为您处理剩下的事情。

 var data = { name: $("#form_name").val(), email: $("#form_email").val(), message: $("#msg_text").val() }; $.ajax({ type: "POST", url: "email.php", data: data, success: function(){ $('.success').fadeIn(1000); } }); 

保留您的email.php代码相同,但替换此JavaScript代码:

  var name = $("#form_name").val(); var email = $("#form_email").val(); var text = $("#msg_text").val(); var dataString = 'name='+ name + '&email=' + email + '&text=' + text; $.ajax({ type: "POST", url: "email.php", data: dataString, success: function(){ $('.success').fadeIn(1000); } }); 

有了这个:

  $.ajax({ type: "POST", url: "email.php", data: $(form).serialize(), success: function(){ $('.success').fadeIn(1000); } }); 

这样您的表单输入名称就匹配了。

你使用错误的post参数:

  var dataString = 'name='+ name + '&email=' + email + '&text=' + text; ^^^^-$_POST['name'] ^^^^--$_POST['name'] etc.... 

javascript / html ID与实际的POST无关,尤其是当您构建自己的数据字符串并且不使用相同的ID时。

您使用了错误的参数名称,请尝试:

 if($_POST){ $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['text']; //send email mail("j.andrew.sears@gmail.com", "51 Deep comment from" .$email, $message); } 

你的代码应该是:

   

JS

 var data = { name: $("#form_name").val(), email: $("#form_email").val(), message: $("#msg_text").val() }; $.ajax({ type: "POST", url: "email.php", data: data, success: function(){ $('.success').fadeIn(1000); } }); 

PHP:

  

您的PHP脚本(外部文件’email.php’)应如下所示: