我有一份登记表。当我点击“提交”按钮时,它应检查是否未使用用户名并且密码是否匹配。所以我编写了一些函数:一个用于检查密码,一个用于检查用户名是否可用,另一个用于检查2个检查功能。密码检查功能很好,但我的问题是用户名检查功能。这是功能:
function checkIsUsernameExist(){
if($("#txtNewUsername").val() == "") {
$("#divIsUsernameExist").html("");
return false;
} else {
$.getJSON("inc/API.php",
{
command : 'isUsernameExist',
username : $("#txtNewUsername").val(),
},
function(result)
{
if (result != true){
$("#divIsUsernameExist").html("This username is available!");
return true;
} else {
$("#divIsUsernameExist").html("This username is not available!");
return false;
}
});
}
}
当用户名为空时,它会返回False。但是当输入某个值时,它返回Undefined。 有人告诉我应该使用Synchronous JAX(但没告诉我怎么做),所以我试着编写这段代码:
function checkIsUsernameExistAsync(){
if($("#txtNewUsername").val() == "") {
$("#divIsUsernameExist").html("");
return false;
} else {
$.ajax({
type: 'POST',
url: 'inc/API.php',
data: ({
command : 'isUsernameExist',
username : $("#txtNewUsername").val(),
cache: false,
async: false
}),
success: function(result){
if (result != true){
$("#divIsUsernameExist").html("This username is available!");
return true;
} else {
$("#divIsUsernameExist").html("This username is not available!");
return false;
}
}
});
}
}
但是我得到相同的结果 - 当它为空时为假,在输入某个值时为未定义。我尝试在第二个函数中将$.ajax
更改为$.getJSON
,但结果仍然相同。
这是来自API.php的代码:
case "isUsernameExist":
echo (isUsernameExist($_REQUEST["username"]));
break;
它在包含的页面BusinessLogic.php中调用了一个函数,这是这个函数:
function isUsernameExist($username)
{
$arr = select("select * from users where username='$username'");
if(count($arr) == 1)
return json_encode(true);
else
return json_encode(false);
}
我怎样才能让它发挥作用?
谢谢!
答案 0 :(得分:1)
总结评论链:
async: false
return
success
处理程序中的jQuery.ajax
未设置外部函数的返回值。要正确传递结果,请定义回调处理程序。更换: