我一直在寻找一个又一个线程,希望能解决这个问题,但没有运气,基本上我有一个非常简单的联系表格,它工作正常,但是当我尝试通过 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;
});
});