试图建立联系表格。表单提交电子邮件和可选的抄送发件人。如果启用了javascript,则表单将提交到contact-ajax.php(用感谢消息替换表单),否则将提交到contact.php(重定向到感谢页面)。后备表单可以正常工作,但是每次ajax表单触发时,它也会发送一个完全空白的电子邮件(如果选中了CC选项,则同时发送给发件人和收件人)。我不知道为什么会这样。任何见识将不胜感激。
表单HTML:
<form method="post" id="email_form" name="email_form" action="contact.php">
<label for="name">Name:</label><br />
<input type="text" name="name" id="name" placeholder="John Doe" /><br />
<label for="email">Email Address:</label><br />
<input type="text" name="email" id="email" placeholder="[email protected]" /><br />
<label for="subject">Subject </label></td><br />
<input type="text" name="subject" id="subject" placeholder="Subject" /><br />
<label for="message">Message:</label></td><br />
<textarea cols="35" rows="5" name="message" id="message" placeholder="Your Message"></textarea><br />
<input type="checkbox" name="cc" id="cc" checked value="Yes" /><label for="cc"> Send yourself a copy of this message</label><br />
<input class="submit pulldown button" name="submit" id="submit" type="submit" value="Send Message" />
</form>
Javascript:
$(document).ready(function() {
$('#email_form #submit').click(function(event) {
event.preventDefault();
$.ajaxSetup ({
cache: false
});
$.ajax({
type: 'POST',
url: 'contact-ajax.php',
data: $("#email_form").serializeArray(),
success: function(msg) {
if(msg=='Mail sent') {
alert(msg);
}
else {
alert('Error sending mail. Please try again.');
}
},
error: function(ob,errStr) {
alert('Error sending mail. Please try again.');
}
});
return false;
});
});
脚本调用的PHP形式(contact-ajax.php):
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$email_subject = $_POST['subject'];
$message = $_POST['message'];
$today = date('r');
$email_from = "[email protected]";
$to = "[email protected]";
$email_body = "On $today $name wrote:\n"."$message";
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $visitor_email \r\n";
if (isset($_POST['cc'])) {
$headers .= "CC: $visitor_email \r\n";
}
$headers .= "X-Mailer: PHP/". phpversion();
mail($to,$email_subject,$email_body,$headers);
if(mail($to, $subject, $body, $headers)) {
die('Mail sent');
}
else {
die('Error: Mail failed');
}
}
?>
非Ajax php脚本(contact.php)相同,除了它以header('Location: thanks_page.html');
而不是最后一个if
语句结尾。
空白电子邮件不包含主题或邮件正文,但“发件人”,“答复至”和“抄送”字段均完全按照正确(非空)邮件中的形式填写。我几天来一直在试图找出问题,但似乎无法找到答案。
参考方案
邮件功能发送邮件..您编写mail()2次..足以检查返回值是否
仅使用这种方式:
mail($to,$email_subject,$email_body,$headers);
if(mail($to, $subject, $body, $headers)) { ......
更新
使用PHPMailer易于使用,我认为比简单的php邮件功能更好。
我如何使用laravel和jquery ajax从一个文本区域到另一个文本区域获取价值。到目前为止,我有此文件。路线:Route::post('/post', 'PostController@post'); 控制器:class PostController extends Controller { public fun…
当文本等于单选按钮的值时,选择单选按钮 - php当下拉菜单中的文本等于值时,是否可以选择2个名称相同但值不同的单选按钮中的1个?https://paste.ee/p/2iCjA第97行我用if-else尝试过:if($('input[name="anrede"]').val() == 'Herr') { $("#Herr").…
我想要每次点击一次又一次的相同效果的jQuery - php我在下面添加我的jQuery代码。当我单击+链接时,一个文本框应该向下滑动即可正常工作。但是当我再次单击并每次单击+时,我希望获得相同的效果。希望任何人都可以帮助我 Jquery ojit_pre 我想要同样的效果http://jsfiddle.net/7yU3n/ ...但是当我再次单击添加相同的添加项时,应该在先前添加的项下 参考方案 使用clone()…
在单次点击甚至点击链接时创建不同的功能 - php我有3个链接,它们是学生的名字。第一次单击链接或奇数时间时,会出现另一个div,其中包含该学生的详细信息。在第二次或偶数时间单击同一链接时,我需要隐藏学生div。使用jquery的data()事件对我来说效果很好。我的要求是,如果我单击第一个学生链接,则会显示第一个学生的详细信息。如果单击第二个学生链接,则会显示第二个学生的详细信息。如果再次单击第一个链接,…
验证php中的javascript对象 - php在我的用户界面中,用户可以构建一些javascript对象,例如:var box = { "width": "100px", "height": "200px", "click": function () { alert("You clicked t…