无法发送邮件

时间:2016-06-26 16:00:23

标签: php jquery

我有一个HTML表单,并与jQuery和PHP链接。 jQuery检查字段是否为空或如果它们不为空,则应将数据发送到PHP文件。但它不起作用。

$(document).ready(function() {
  $("#submit").click(function() {
    var name = $("#name").val();
    var message = $("#message").val();

    $("#returnmessage").empty(); // To empty previous error/success message.
    // Checking for blank fields.
    if (name == '') {
      alert(" Please Fill your name");
    } else if (message == '') {
      alert("Please Fill message");
    } else {
      $.post("xxx.php", { // To php file.
        name: name,
        message: message
      }, function(data) {
        $("#returnmessage").append(data);
        if (data == "We will contact you soon.") {
          $("#form")[0].reset(); // To reset form fields on success.
        }
      });
    }
  });
});
<form name="form" method="post" action="">
  <h4>FEED-BACK FORM</h4>
  <p id="returnmessage"></p>
  <label>Name:  </label>
  <input type="text" id="name" /><br>
  <label>Message:  </label>
  <input type="text" id="message" /><br>
  <input type="button" id="submit" value="Submit"/>
</form>

PHP代码是:

if(!isset($_POST['submit']))
       {
    //Need to submit the form.
    exit;
       }
$name = $_POST['name'];
$message = $_POST['message'];

$email_body ="Dear sir,\n".
"Name: $name\n". 
"Message:    $message\n";

//Email sending to
$email_from = 'xxx@xxx.xxx';
$email_subject = "my-form";
$to = "xxx@xxxx";
$headers = "From: $email_from \r\n";

//Send the email!
mail($to,$email_subject,$email_body,$headers);

2 个答案:

答案 0 :(得分:0)

您正在使用此支票:

if (!isset($_POST['submit']))

这通常永远不会执行,因为你将POST数据发送到服务器,以及每个浏览器如何接受它。特别是Chrome,不会POST submit。它主要取决于AJAX发送的数据,因此您需要查看它发送的内容:

使用:

代替您的代码
if (count($_POST) == 0)
  exit;

此外,请确保您已设置mail()功能以使用SMTP或php.ini中使用的功能。只有可以检查你的控制台,服务器响应是什么。因此,请向您的客户提供更多详细信息:

if (mail($to, $email_subject, $email_body, $headers))
  die("Success");
else
  die("Failed");

以上部分将有助于诊断脚本出错的位置。同时,在退出第一部分之前,回复一条消息。而不是您的代码,使用:

if (count($_POST) == 0)
  die("Need to POST");

同样在客户端,请确保使用最新或相当不错的jQuery版本(版本&gt; 1.9.1)。

看起来OP需要更详细的解释才能找到错误。可能对其他人有所帮助:

  1. Chrome 中打开您的网址。请告诉我们您在地址栏中使用了哪些网址
  2. 加载页面后, F12 按钮。这将打开控制台。
  3. 如果这不起作用,请右键单击并选择检查,然后单击控制台。确保首先通过单击“交叉”按钮清除控制台。
  4. 重新加载页面。查看控制台中是否存在任何错误。
  5. 告诉我们您在控制台中看到了什么,在提供信息后,点击网络标签,点击提交,看看您是否有任何活动。
  6. 等待进一步的回复。

    <强>更新

    您正在检查success方法:

    if (data == "We will contact you soon.")
    

    但是你在哪里发送它在PHP文件中?你需要在PHP文件的末尾。

    echo "We will contact you soon.";
    

答案 1 :(得分:0)

我已经尝试过您的代码,但没有收到错误。运行代码。 哪个版本使用你的jQuery lib?

请你试试

  

jQuery lib 2.2   https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js

这个?

 jQuery(document).ready(function() {
  jQuery("#submit").click(function() {
    var data_name = jQuery("#name").val();
    var data_message = jQuery("#message").val();
    jQuery("#returnmessage").empty(); // To empty previous error/success message.
    // Checking for blank fields.
      if (data_name == '' ) {
        alert(" Please Fill your name");
      } else if(data_message == '' ) {
        alert("Please Fill message");
      } else { 
        jQuery.post("xxx.php", { // To php file.
            name: data_name, message: data_message
        }, function(data) {
            jQuery("#returnmessage").append(data); 
          if (data == "We will contact you soon.") {
            jQuery("#form")[0].reset(); // To reset form fields on success.
          }
        });
    }
  });
});