检查用户名是否存在,然后我想更新

时间:2014-05-07 13:46:25

标签: php jquery mysql ajax jquery-validate

如果您想要更改,我有一个代码可以检查用户名是否可用。但是现在我看到如果你更新其他密码等东西,你可以假设保存为用户名已经存在。 下面列出的是我使用的代码,正如你所看到的,我试图想到一些东西,但根本没有进展顺利。

PHP

$sql = "Select * FROM table WHERE Slug = '$slug' AND ID ='$id' LIMIT 1";
$query = mysql_query($sql);

if(mysql_num_rows($query)>0){    
    echo 'true';  
}else{  
    $e_sql = "Select * FROM table WHERE Slug = '$slug'";
    $e_query = mysql_query($e_sql);
    if(mysql_num_rows($e_query)>0){    
        echo 'false';  
    }else{  
        echo 'false';  
    }   
}   

Jquery的/使用Javascript

 var response;
    $.validator.addMethod(
        "uniqueUserName", 
        function(value, element) {
            $.ajax({
                type: "POST",
                url: "User.php",
                data: {
                'slug': value,
                'id': <?php echo $id; ?>
                },
                dataType:"html",
                success: function(msg)
                {   console.log(msg);
                    response = ( msg == 'true' ) ? true : false;

                }
             });
             return response; 
        },

        "This Name is already used!"
    );

    $("#addSurvey").validate({
        rules: {
            name: {
                required: true,
                uniqueUserName: true
            },
        }
    });

2 个答案:

答案 0 :(得分:1)

基本上问题出在您的$.ajax请求中。

如您所知{默认$.ajax执行异步HTTP(Ajax)请求。

最简单的解决方案是让请求同步。

要使请求同步,您应该设置选项async: false - 在这种情况下,代码将线性执行,只有在ajax请求完成时才会获得return response;

所以基本上将ajax调用的一部分改为:

 $.ajax({
      type: "POST",
      url: "User.php",
      async: false,
      data: {
        'slug': value,
        'id': <?php echo $id; ?>
      },
      dataType:"html",
      success: function(msg){
        response = msg === 'true';
      }
    });

可能有用:

<强> jQuery.ajax() Documentation

答案 1 :(得分:0)

设置

response = (( msg == 'true' ) ? true : false);