奇怪的jQuery AJAX成功函数行为

时间:2013-01-16 06:22:55

标签: php jquery

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

这是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会收到正确的数据并成功发送电子邮件,并回显“正确”。弹出一个警告说“正确”。但是,不是下一个警告“数据是正确的”,而是“数据不等于正确”。

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

3 个答案:

答案 0 :(得分:1)

您无法从ajax电话重定向。如果您使用header函数,它将在ajax成功中打印许多标题数据。

标题数据是您获得的Strange Result ...

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

如果您想在成功后重定向,请在ajax success

中执行此操作
if (data == "Correct") {
    window.location = '[website addresss here]';
}

答案 1 :(得分:1)

这个单词不匹配。 使用

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

希望它会有所帮助。

答案 2 :(得分: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');
            }
        }
    });