我正在使用此代码进行电子邮件验证:
function validateEmail(){
//testing regular expression
var a = $("#email").val();
$.ajax({
type: "GET",
url: "is_email.php",
data: "email="+a,
success: function(response){
//if it's valid email
if(is_email(a)){
email.removeClass("error");
emailInfo.text("");
emailInfo.removeClass("error");
return true;
//if it's NOT valid
}else{
email.addClass("error");
emailInfo.text("Please type a valid E-mail");
emailInfo.addClass("error");
return false;
}
}
});
}
但我在firebug中收到此错误:is_email未定义。
我该如何纠正?
谢谢
答案 0 :(得分:1)
看起来你正试图在JavaScript中使用PHP函数。这是不可能的,但如果is_email.php脚本执行验证并根据结果打印一些内容,则可以使用它。
假设当电子邮件有效时,is_email.php会打印“ok”(更改为实际输出):
function validateEmail(){
var a = $("#email").val();
$.ajax({
type: "GET",
url: "is_email.php",
data: "email="+a,
success: function(response){
if( response == "ok" ){
// email is valid
} else {
// email is not valid
}
}
});
}
但是,我怀疑is_email.php只包含is_email()
函数。在这种情况下,您必须创建另一个实际使用该函数的PHP脚本,并在Ajax调用中使用它:
<?php // validate_email.php
require( 'is_email.php' );
if( is_email( $_GET[ 'email' ] ) ) {
echo 'ok';
}
else {
echo 'invalid';
}
然后将Ajax调用中的url: "is_email.php"
行更改为url: "validate_email.php"
(或调用新脚本)。
另请注意,从Ajax中的回调函数返回true或false是没有意义的:没有任何东西可以接收该信息。在Ajax调用完成后,validateEmail()
已经很久了。你必须在回调函数中做你想做的所有事情。