0

我有一个与 jQuery 的 AJAX 方法一起使用的 PHP 联系表单,但是使用“成功:”函数得到了非常奇怪的结果。

这是 PHP 联系表:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$number = $_POST['number'];
$message = $_POST['message'];
$msg = "Name: $name\n";
$msg .= "Email: $email\n";
$msg .= "Number: $number\n\n";
$msg .= "$message\n";
$recipient = "[recipients here]";
$subject = "Contact Us - $name";
$mailheaders = "From:$email";
$success = mail($recipient, $subject, $msg, $mailheaders);

if ($success) {
    echo ('Correct');
} else {
    echo ('Failed');
}
header("Location: [website address here]");
?> 

这是 jQuery AJAX 方法:

$("#contact-form").submit(function (event) {
    $.ajax({
        type: "POST",
        url: '/lib/mailer.php',
        data: {
            name: $("#name").val(),
            email: $("#email").val(),
            number: $("#number").val(),
            message: $("#message").val()
        },
        success: function (data) {
            //$("#contact-form")[0].reset();
            alert(data);

            if(data === 'Correct') {
                alert('Data is correct');
            }
            else if (data !== 'Correct') {
                alert('Data is not equal to correct');
            }
            else {
                alert('Else statement');
            }
        }
    });

    event.preventDefault();
    return false;
});

现在,当我填写表格并单击提交时,PHP 接收到正确的数据并成功发送电子邮件,并回显“正确”。弹出一个警告说“正确”。但是,下一个警报不是“数据正确”,而是“数据不等于正确”。

我不知道这里发生了什么。我假设我一定在某个地方犯了一个非常愚蠢的错误,但似乎无法弄清楚。

4

3 回答 3

1

您不能从ajax呼叫中重定向。如果您正在使用header函数,它将在 ajax 成功中打印许多标题数据。

标题数据是Strange Result你得到的......

消除header("Location: [website address here]");

如果您想在成功后重定向,请在ajax success块中执行此操作

if (data == "Correct") {
    window.location = '[website addresss here]';
}
于 2013-01-16T06:28:06.230 回答
1

它与单词不匹配。利用

if($.trim(data) == 'Correct')

希望它会有所帮助。

于 2013-01-16T06:31:19.617 回答
0

header("Location: [website address here]")从您的mailer.php页面中删除

$.ajax({
        type: "POST",
        url: '/lib/mailer.php',
        data: {
            name: $("#name").val(),
            email: $("#email").val(),
            number: $("#number").val(),
            message: $("#message").val()
        },
        async:false, //  <---- Add this fella here
        success: function (data) {
            //$("#contact-form")[0].reset();
            alert(data);

            if(data === 'Correct') {
                alert('Data is correct');
            }
            else if (data != 'Correct') {
                alert('Data is not equal to correct');
            }
            else {
                alert('Else statement');
            }
        }
    });
于 2013-01-16T06:41:34.450 回答