jQuery + PHP发送重复的空白电子邮件 - php

试图建立联系表格。表单提交电子邮件和可选的抄送发件人。如果启用了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从textarea到textarea取值? - 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…