Ajax表单:发送错误的值

时间:2013-02-15 16:46:45

标签: php javascript jquery ajax forms

我试图找出为什么这个表单总是在JavaScript被激活时返回“Error”,但是当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 );

1 个答案:

答案 0 :(得分:2)

您正在数据字符串中调用电子邮件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());