我有一张登记表。当我点击Submit按钮时,它应该检查用户名是否没有被接受,以及密码是否匹配。所以我写了几个函数:一个检查密码,一个检查用户名是否可用,以及main函数,它调用两个检查函数。密码检查功能运行良好,但我的问题是用户名检查功能。这是函数:
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。有人告诉我应该使用同步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;
}
}
});
}
}但是我得到了相同的结果-当它为空时为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);
}我怎么才能让它工作呢?
谢谢!
发布于 2012-03-25 21:03:24
总结一下注释链:
jQuery.ajax的success处理程序中的return不设置外部函数的返回值。要正确传递结果,请定义一个回调处理程序。替换:http://jsfiddle.net/wGfzc/
之前的
https://stackoverflow.com/questions/9859403
复制相似问题