0

我认为这可能是我的代码无法正常工作的原因。'if(name.val().length > 3)' 永远无法执行,所以我发出警报以测试返回的数据,这就是它看起来像 :

在此处输入图像描述

我的js

$(document).ready(function(){

    var form = $("#customForm");
    var name = $("#name");
    var nameInfo = $("#nameInfo");
    var email = $("#email");
    var emailInfo = $("#emailInfo");
    var pass1 = $("#pass1");
    var passInfo = $("#pass1Info");
    var pass2 = $("#pass2");
    var pass2Info = $("#pass2Info");
    var state = false;

name.keyup(validateName);

function validateName(){
    if(name.val().length <= 3){
        name.removeClass("valid");
        nameInfo.removeClass("valid");
        name.addClass("error");
        nameInfo.addClass("error");
        nameInfo.text("Minimum 4 characters!");
        state = false;

    }else{

        if(name.val().length > 3){
        var username=name.val();
            $.post('validate.php',{names: username},function(data){
                alert(data);
                if(data!=0){
                    name.removeClass("valid");
                    nameInfo.removeClass("valid");
                    name.addClass("error");
                    nameInfo.addClass("error");
                    nameInfo.text("The username is already taken!");
                    state = false;
                }else{
                    name.removeClass("error");
                    nameInfo.removeClass("error");
                    name.addClass("valid");
                    nameInfo.addClass("valid");
                    nameInfo.text("username available");
                    state = true;
                }
            });

        }
    }    
}
return state;

//end
});

我的 PHP 代码:

<?php 
$name = $_POST['names'];
$email = $_POST['emails'];

if($name !=""){
    mysql_connect("localhost","root","") or die("Fail to connect to database");
    mysql_select_db("reglog");

    $uname = mysql_query("SELECT username FROM users WHERE username='$name'");
    $count = mysql_num_rows($uname);

    if($count !=0){
        echo 1;
    }else{
        echo 0;
    }
}

if($email !=""){
    mysql_connect("localhost","root","") or die("Fail to connect to database");
    mysql_select_db("reglog");

    $useremail = mysql_query("SELECT email FROM users WHERE email='$email'");
    $countemail = mysql_num_rows($useremail);

    if($countemail !=0){
        echo 1; 
    }else{
        echo 0;
    }
}

?>
4

3 回答 3

1

它正在抛出一个warning. 养成检查 aindex是否在数组中可用的习惯,从而消除此类错误的可能性。

$email = isset($_POST['emails']) ? $_POST['emails'] : '';

或者不显示任何错误来抑制此类警告(不推荐)。

正如 Kai 所提到的,您没有将任何变量传递为emails.

$.post('validate.php',{ names: username, 'emails' : email }, ... }
于 2013-09-12T01:27:33.843 回答
0

您没有将电子邮件作为 post 变量传递。

$.post('validate.php',{names: username},function(data){

应该

$.post('validate.php',{names: username, emails: email},function(data){

正如 starx 所说,在对变量运行进程之前,您应该使用 isset 检查发布值

于 2013-09-12T01:29:19.837 回答
0

将返回类型设置为html,它将起作用。

于 2013-09-12T01:37:49.210 回答