0

我一直在寻找一个又一个线程,希望能解决这个问题,但没有运气,基本上我有一个非常简单的联系表格,它工作正常,但是当我尝试通过 jQuery AJAX 处理它时,没有发送电子邮件但成功回调触发器。

阻止它工作的是所有代码都在同一个页面上(index.php),表单处理 PHP 没有单独的页面,所以现在所有代码都在同一个页面上我不得不添加一个 if 语句如果PHPif (!empty($_POST['contact-submit'])) {}是从自己的文件中调用的,我就不必这样做了。我不希望 PHP 在一个单独的文件中,所有内容都需要在一个页面上,如果有人知道如何克服这个问题,我将不胜感激,因为这让我发疯了!

HTML:

<form class="contact-form island" method="post" action="">
  <ul class="form-fields">
    <li>
      <label>Your Name</label>
      <input class="text-input" type="text" name="name" required value="TEST NAME">
    </li>
    <li>
      <label>Your Email</label>
      <input class="text-input" type="email" name="email" required value="email@gmail.com">
    </li>
    <li>
      <label>Subject</label>
      <input class="text-input" type="text" name="subject" required value="TEST SUBJECT">
    </li>
    <li>
      <label>Message</label>
      <textarea rows="7" name="message" required>MESSAGE</textarea>
    </li>
    <li>
      <input class="submit-input" type="submit" value="Send" name="contact-submit">
    </li>
  </ul>
</form>

PHP:

<?php
  if (!empty($_POST['contact-submit'])) {
    $name = trim(stripslashes($_POST['name'])); 
    $email = trim(stripslashes($_POST['email'])); 
    $subject = trim(stripslashes($_POST['subject'])); 
    $message = trim(stripslashes($_POST['message'])); 

    $email_from = $email;
    $email_to = 'email@gmail.com';

    $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;

    $success = mail($email_to, $subject, $body, 'From: <'.$email_from.'>');

    echo '<p>Email Sent!</p>';
  }
?>

jQuery:

$(function() {

  var form = $('.contact-form');
  form.submit(function () {
    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      data: form.serialize(),
      success: function() {
        $.fancybox({'content': 'Email Sent!'});
      }
    });
    return false;
  });

});
4

2 回答 2

0

我很无聊,我根据你的一些代码和我的一些代码让你成为了一个工作的人:http: //pastie.org/private/zsh9jqej1zkdpeouditww

几个快速说明:它确实会根据用户提交的内容向用户提供反馈,因此如果某些内容是空白的,它会将其踢回并让他们重试。我在那里放了一个“加载图像”,以防你想使用它......本质上是为了防止人们向按钮发送垃圾邮件。在我的服务器上,click => 几乎立即返回,并不意味着总是如此。

注意:使用您的 PHP 文件名编辑第 48 行。

于 2013-04-12T00:18:38.507 回答
0

在 jQuery-ajax 部分: url: form.attr('action')指向表单中的动作属性,但在 html 表单中为空。

<form class="contact-form island" method="post" action="">
于 2013-04-12T00:36:59.027 回答