2013-01-24 82 views
2

我有一个注册表格,当填写完毕并且按下“注册”按钮时,js会检查它,找到空字段并检查用户名的可用性,或者电子邮件或移动号码已被通过ajax发送信息到php并接收答案。但我的js不会一直工作。这是我的JS脚本:ajax注册验证和认证

$("#reg_button").click(function(){ 
    user = $("#usr").val(); 
    pass = $("#psw").val(); 
    fname = $("#first_name").val(); 
    sname = $("#second_name").val(); 
    dateb = $("#date_birth").val(); 
    email = $("#email").val(); 
    mobnum = $("#mob_num").val(); 

    if(user == ""){ 
     alert("First name must be filled out"); 
     $('#usr').focus(); 
     return false; 
    }else if(pass == ""){ 
     alert("Password must be filled out"); 
     $('#psw').focus(); 
     return false; 
    }else if(fname == ""){ 
     alert("First name must be filled out"); 
     $('#first_name').focus(); 
     return false; 
    }else if(sname == ""){ 
     alert("Second name must be filled out"); 
     $('#second_name').focus(); 
     return false; 
    }else if(dateb == ""){ 
     alert("Date of birth must be filled out"); 
     $('#date_birth').focus(); 
     return false; 
    }else if(email == ""){ 
     alert("Email must be filled out"); 
     $('#email').focus(); 
     return false; 
    }else if(mobnum == ""){ 
     alert("Mobile number must be filled out"); 
     $('#mob_num').focus(); 
     return false; 
    }else{ 
     ajaxCheck(); 
    } 

    function ajaxCheck(){ 
     $.ajax({ 
      type: "POST", 
      url: "http://imes.*********.com/php/check_info_reg.php", 
      data: "usr="+user+"&email="+email+"&mob_num="+mobnum, 
      dataType: "json", 
      success: function(json){ 
       if(json.success){ 
        var user_conf = json.data.usr; 
        var email_conf = json.data.email; 
        var mob_conf = json.data.mob; 

        if(user_conf == "taken"){ 
         alert("Username already taken. Choose another one."); 
         $('#usr').focus(); 
         return false; 
        } 

        if(email_conf == "taken"){ 
         alert("Email already registered. If you lost your password, retrieve it on login page."); 
         $('#email').focus(); 
         return false; 
        } 

        if(mob_conf == "taken"){ 
         alert("Mobile number already registered. If you lost your password, retrieve it on login page."); 
         $('#mob_num').focus(); 
         return false; 
        } 
       }else{ 
        //Here could go another ajax, for actualy sending the 
        //info into the php script which sends it to database. 
       } 
      }, 
      beforeSend: function() { $.mobile.showPageLoadingMsg(); }, //Show spinner 
      complete: function() { $.mobile.hidePageLoadingMsg() }, //Hide spinner 
     }); 
     return false; 
    } 
}); 

而且我的PHP:

<?php 
$username = mysql_real_escape_string($_POST['usr']); 
$email = mysql_real_escape_string($_POST['email']); 
$mob_num = mysql_real_escape_string($_POST['mob_num']); 

include('mysql_connection.php'); 
mysql_select_db("jzperson_imesUsers", $con); 

$sql1 = mysql_query("SELECT * FROM registered_user WHERE username='$username'"); 
$sql2 = mysql_query("SELECT * FROM registered_user WHERE email='$email'"); 
$sql3 = mysql_query("SELECT * FROM registered_user WHERE mobile_num='$mob_num'"); 

$res1 = mysql_num_rows($sql1); 
$res2 = mysql_num_rows($sql2); 
$res3 = mysql_num_rows($sql3); 

if(isset($username) && !empty($username){ 
if($res1 >= 1){ 
    //JSON message: Username already taken. Choose different. 
    echo json_encode(array('success'=>true, 'usr'=>"taken")); 
} 
} 

elseif(isset($email) && !empty($email)){ 
if($res2 >= 1){ 
    //JSON message: Email already registered. Retrieve on "login"(login => link). 
    echo json_encode(array('success'=>true, 'email'=>"taken"));; 
} 
} 

elseif(isset($mob_num) && !empty($mob_num)){ 
if($res3 >= 1){ 
    //JSON message: Mobile number already registered. Retrieve on "login"(login => link). 
    echo json_encode(array('success'=>true, 'mob'=>"taken")); 
} 
} 

else{ 
echo json_encode(array('success'=>false)); 
} 
?> 
+2

[ **请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql) 。他们不再被维护[并被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 –

+0

如果您也会发布错误讯息,那么这很容易,因此我们不必通过您的问题(很长) – bipen

+0

没有得到任何TBH。但问题是,在输入相同的用户名,电子邮件或电话号码后,脚本只会通过,它不会提醒我,只会在未填写的字段中提醒。所以Ajax部分必须有一些问题。 –

回答

1

你缺少你的PHP文件中的括号:

if(isset($username) && !empty($username){ 

应该

if(isset($username) && !empty($username)){ 
+0

谢谢,有用但可惜没有解决我的问题。 –

+0

你是否曾经完成这项工作,如果你有这个问题,你可以发布你的工作解决方案吗? – BarclayVision