【问题标题】:PHP code for AJAX contact formAJAX 联系表单的 PHP 代码
【发布时间】:2015-08-21 08:39:55
【问题描述】:

我试图制作一个使用 jQuery AJAX 和 PHP 的联系表单。我的HTML如下

<form action="#" id="contactForm" method="post" name="contactForm">
<fieldset>
    <div class="col-sm-12">
        <input id="contactName" name="contactName" placeholder="Your Name*" type="text" value="" required>
    </div>

    <!-- Name Field [ END ] -->

    <div class="col-sm-12">
        <input id="contactEmail" name="contactEmail" placeholder="Your Email*" type="email" value="" required>
    </div>

    <!-- Email Field [ END ] -->

    <div class="col-xs-12">
        <textarea cols="5" id="contactMessage" name="contactMessage" placeholder="Your Message....*" required></textarea>
    </div>

    <!-- Message Field [ END ] -->

    <div class="col-xs-12">
        <button class="submit">SEND</button>
    </div>

    <!-- Submit Button [ END ] -->

    <div class="error col-xs-12">
        <h3>Sorry! Your message was not sent.</h3>
    </div>

    <!-- Error Message [ END ] -->

    <div class="success col-xs-12">
        <h3>Success! Your message was sent.</h3>
    </div>

    <!-- Seccess Message [ END ] -->

</fieldset>

而jQuery代码如下

$('form#contactForm').submit(function () {

    var url = $('#contactForm').attr('action'),
        type = $('#contactForm').attr('method'),

        contactName = $('#contactForm #name').val(),
        contactEmail = $('#contactForm #email').val(),
        contactMessage = $('#contactForm #message').val(),
        data = {
            name: contactName,
            email: contactEmail,
            message: contactMessage
        };

    $.ajax({
        type: type,
        url: url,
        data: data,
        success: function () {
            $('.success').fadeIn();
            $('.error').fadeOut();
        },
        error: function () {
            $('.error').fadeIn();
            $('.success').fadeOut();
        }
    });
    return false;
});

有什么 PHP 代码可以使这个表单工作。我正在使用以下代码

 <?php

    if ( isset( $_POST['name'], $_POST['email'], $_POST['message'] ) ) {

        $to = 'mail@example.com'; //my email address here
        $subject = 'Message From :' . $_POST['name'];
        $message = $_POST['message'];
        $headers = 'From :' . $_POST['email'].'\r\n';

        mail($to,$subject,$message,$headers);

    }
?>

但它不起作用。显示成功消息但未收到邮件。 我对PHP不是很熟悉。

请帮忙....

【问题讨论】:

  • 您可以尝试通过为您的 php 部件输入手动值来发送电子邮件吗?我只是想首先检查您的邮件机制是否运行良好。
  • 我试过但没有收到任何邮件
  • 您从哪里发送邮件?从你的本地主机或实时服务器?
  • 那么这就是你的 PHP 邮件机制的问题。您的服务器配置设置正确吗?
  • 你能检查你的 PHP 日志看看是否有任何错误被抛出

标签: javascript php jquery ajax forms


【解决方案1】:

您的成功消息显示是因为调用了php页面成功,这并不表示邮件发送成功。您应该通过返回邮件功能响应来检查这一点:

$response = mail($to,$subject,$message,$headers);
echo $response;

这将返回真或假。此外,您还必须检查邮件是否被正确接收,它可能最终成为垃圾邮件,或者由于各种原因被您的邮件服务器拒绝。如果是这种情况,您可以对邮件标头进行一些补充。 Here are some pointers关于如何通过邮件

【讨论】:

    【解决方案2】:

    尝试添加

    method: "POST",
    

    在您的 $.ajax 调用中,默认情况下 $.ajax 使用 GET 请求

    【讨论】:

      【解决方案3】:

      这对你有用

      $('form#contactForm').submit(function () {
      
          var url = $('#contactForm').attr('action');
              var type = $('#contactForm').attr('method');
      
              var contactName = $('#contactName').val(); 
              var contactEmail = $('#contactEmail').val(); 
               var contactMessage = $('#contactMessage').val();
              data = {
                  name: contactName,
                  email: contactEmail,
                  message: contactMessage
              };console.log(data);
      
          $.ajax({
              type: type,
              url: url,
              data: data,
              success: function () {
                  $('.success').fadeIn();
                  $('.error').fadeOut();
              },
              error: function () {
                  $('.error').fadeIn();
                  $('.success').fadeOut();
              }
          });
          return false;
      });
      

      你的 PHP 代码变成了

      <?php
      if ( isset( $_POST['name'], $_POST['email'], $_POST['message'] ) ) {
      
          $to = $_POST['email']; //my email address here
          $subject = 'Message From :' . $_POST['name'];
          $message = $_POST['message'];
          $headers = 'From :' . $_POST['email'].'\r\n';
      
          mail($to,$subject,$message,$headers);
      
      }
              echo 'sucess';
      ?> 
      

      这里也要改

      &lt;form action="===GIVE YOUR FILE NAME CONTAINING PHP mail() CONTAINS====" id="contactForm" method="post" name="contactForm"&gt;

      并且您应该确认您的服务器已启用mail() 功能

      试试这个,让我知道..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-26
        • 1970-01-01
        相关资源
        最近更新 更多