PHP Mail & Ajax: Сообщение не содержит данных формы - PullRequest
0 голосов
/ 27 июля 2010

Я использую функцию JJuery 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;
});

Я знаю, что это не самый безопасный метод, учитывая, что я раскрываю файл Mail в своем коде JS, но тем не менее хочуэто сработает, прежде чем я решу попробовать что-нибудь еще.В моей контактной форме у меня есть вышеуказанные поля (имя, адрес электронной почты, телефон и сообщение), а в «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 Ответ

1 голос
/ 27 июля 2010

Я думаю, что вы действительно захотите передать массив JSON в качестве параметра данных вместо строки в стиле GET.

Что-то вроде:

post = { 'name' : name, ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...