PHP Mail& Ajax:消息不包含任何表单数据

时间:2010-07-27 18:10:13

标签: php ajax email

我正在使用jQuery的AJAX函数从联系表单发送消息 -

$('form button').click(function () {

    $("input").removeClass("error");
    $("textarea").removeClass("error");

    var name = $("#name").val();
    if (name == "" || name == "Name" || name == "Namn") {
        $("#name").addClass("error");
        $("#name").focus();
        return false;
    }

    var email = $("#email").val();
    if (email == "" || email == "Email" || email == "Epost") {
        $("#email").addClass('error');
        $("#email").focus();
        return false;
    }

    var message = $("#message").val();
    if (message == "") {
        $("#message").addClass('error');
        $("#message").focus();
        return false;
    }

    // Non-verifying fields
    var phone = $("input#phone").val();

    // Gather data
    var post = 'name=' + name + '&email=' + email + '&phone=' + phone + '&message=' + message;

    // Disable form
    var limit = document.forms[0].elements.length;
    for (i = 0; i < limit; i++) {
        document.forms[0].elements[i].disabled = true;
    }

    // Send data
    $.ajax({
        type: "POST",
        url: "form_handler.php",
        data: post,
        success: function () {
            $('div.contact form').animate({
                opacity: 0.25
            }, function () {
                $('div.contact div.confirm').fadeIn(200);
            });
        },
        error: function () {
            $('div.contact form').animate({
                opacity: 0.25
            }, function () {
                $('div.contact div.deny').fadeIn(200);
            });
        }
    });
    return false;
});

我知道这不是最安全的方法,因为我在我的JS代码中显示了Mail文件,但是在我决定尝试其他任何东西之前,我希望它能够工作。在我的联系表格中,我有上述字段(姓名,电子邮件,电话和消息),在“form_handler.php”中,设置看起来像这样 -

<?php
header('Content-type: text/html; charset=UTF-8');

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];

$to = "staffan.estberg@gmail.com";
$subject = "Meddelande från x.se";
$body = "------------------------------------------------------------------------------------------------------------------------\n\n";
$body .= "Meddelande från $name:\n\n";
$body .= "$message\n\n";
$body .= "Avsändarens epost: $email\n";
$body .= "Avsändarens telefonnummer: $phone\n\n";
$body .= "------------------------------------------------------------------------------------------------------------------------";
$headers = "From: $email";

mail($to,$subject,$body,$headers);
?>

当我组合脚本时,我设法生成一条消息,尽管它不包含任何表单数据。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

我认为你实际上想要传递一个JSON数组作为数据参数而不是GET风格的字符串。

类似的东西:

post = { 'name' : name, ... }