首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在注册表中使用同步JAX检查用户名可用性

在注册表中使用同步JAX检查用户名可用性
EN

Stack Overflow用户
提问于 2012-03-25 18:19:59
回答 1查看 267关注 0票数 0

我有一张登记表。当我点击Submit按钮时,它应该检查用户名是否没有被接受,以及密码是否匹配。所以我写了几个函数:一个检查密码,一个检查用户名是否可用,以及main函数,它调用两个检查函数。密码检查功能运行良好,但我的问题是用户名检查功能。这是函数:

代码语言:javascript
复制
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 (但没有告诉我如何使用),所以我尝试编写以下代码:

代码语言:javascript
复制
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的代码:

代码语言:javascript
复制
case "isUsernameExist":
        echo (isUsernameExist($_REQUEST["username"]));
        break;

它在包含的页面BusinessLogic.php中调用一个函数,下面是这个函数:

代码语言:javascript
复制
function isUsernameExist($username)
{
    $arr = select("select * from users where username='$username'");
    if(count($arr) == 1)
    return json_encode(true);
    else
    return json_encode(false);
}

我怎么才能让它工作呢?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-25 21:03:24

总结一下注释链:

  • 避免同步AJAX请求:删除数据` `dataType:'json',jQuery.ajaxsuccess处理程序中的
  • return不设置外部函数的返回值。要正确传递结果,请定义一个回调处理程序。替换:

http://jsfiddle.net/wGfzc/

  • After:http://jsfiddle.net/wGfzc/2/

之前的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9859403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档