我正试图弄清楚为什么当JavaScript被激活时,这个表单总是返回"错误",而当JavaScript被停用时,它的工作方式却应该如此
这与echo "success"
和echo "error"
有关,但我真的不知道出了什么问题。我试着回显1
或2
、true
或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 );
您在数据字符串中调用电子邮件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());