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