0

我试图弄清楚为什么当 JavaScript 被激活时这个表单总是返回“错误”,但是当 JavaScript 被停用时它应该像它一样工作。
它与echo "success"and有关系echo "error",但我真的无法找出问题所在。我试图回应1or 2, trueor false- 它永远不会起作用。为什么?

我的 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 );
4

1 回答 1

2

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

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());
于 2013-02-15T16:49:38.060 回答