Jquery电子邮件验证

时间:2011-08-06 21:59:46

标签: jquery

我正在使用此代码进行电子邮件验证:

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未定义。

我该如何纠正?

谢谢

1 个答案:

答案 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()已经很久了。你必须在回调函数中做你想做的所有事情。