Ajax表单:返回的值错误


Ajax Form: Wrong value sent back

我正试图弄清楚为什么当JavaScript被激活时,这个表单总是返回"错误",而当JavaScript被停用时,它的工作方式却应该如此
这与echo "success"echo "error"有关,但我真的不知道出了什么问题。我试着回显12truefalse,但都不起作用。为什么?

我的jQuery代码:

$("form").submit(function () {
        var name     = $( "input[name=name]" ),
            mail     = $( "input[name=email]" ),
            message  = $( "textarea[name=message]" );
        var data = "name=" + name.val() + "&mail=" + mail.val() + "&message="  + encodeURIComponent(message.val());
        $.ajax({
            url: "my_form.php",
            type: "POST",
            data: data,
                success: function ( data ) {
                    if ( data == "success" ) {
                        alert( "Everyhting is good." );
                    } else {
                        alert( "Error" );
                    }
                }
        });
        return false;
})

PHP部分:

$name    = $_POST["name"];
$email   = $_POST["email"];
$message = $_POST["message"];
function checkEmail( $e ) {
    $isValid = true;
    if ( strlen( $e ) === 0 ) {
        $isValid = false;
    }
    if ( !preg_match( "/^((?:(?:(?:'w['.'-'+]?)*)'w)+)'@((?:(?:(?:'w['.'-'+]?){0,62})'w)+)'.('w{2,6})$/", $e ) ) {
        $isValid = false;
    }
    if ( $isValid == true ) {
        echo "success";
    } else {
        echo "error";
    }
}
checkEmail( $email );

您在数据字符串中调用电子邮件mail,并在php中期望$_POST['email']

var data = "name=" + name.val() + "&mail=" + mail.val() + "&message="  + encodeURIComponent(message.val());

将上面一行中的mail更改为类似下面的电子邮件。

var data = "name=" + name.val() + "&email=" + mail.val() + "&message="  + encodeURIComponent(message.val());