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