Php AJAX注册表表单上的奇怪问题

Php AJAX注册表表单上的奇怪问题,php,jquery,ajax,Php,Jquery,Ajax,我的注册页面上有这样一个函数 $(document).ready(function(){ $("#tryRegister").click(function() { $("#result").html('<img src="<%THEME%>images/loading.gif">'); var formData = $("#regForm").serialize();

我的注册页面上有这样一个函数

    $(document).ready(function(){
        $("#tryRegister").click(function()
        {
            $("#result").html('<img src="<%THEME%>images/loading.gif">');
            var formData = $("#regForm").serialize();
            $.post("?page=register&do=1", formData, function(data)
            {
                $("#result").html(data);
            });
        });
    });
错误函数仅在获取输入的语言值后才回显输入。在这种情况下不重要:

问题

当我成功注册时,它会宣布“Username is take.”而不是“You have registration successfully!”,该成员帐户以前不存在于数据库中,并且在成功注册后存在


PHP方面似乎是正确的。(因为它在没有ajax的情况下工作)它可能与jQuery函数有关,也许它会快速请求两次或更多。有什么想法吗?

这个问题很老了,但我想分享解决方案。问题是PHP控制器运行了两次。服务定位器模型调用了它两次,主要是因为我的缓存实现的时间不匹配

想一想

$controller->Run();
if(cache === true)
    $controller->Run();

这两种方法都运行,所以用户在第一次调用时成功注册。在第二次调用中,它注意到username已被占用,并响应“username已被占用”。

确定doQuery在成功时不返回任何内容?它应返回0值,因为数据库中的帐户ID不存在,因此,REG_USER_in_USE不应作为输出。doQuery是您创建的函数吗?如果是的话,你能发布它的代码吗?在我看来,当doQuery调用指示数据库查询成功时,您将从中得到一个布尔值。在PHP中,我相信(true>0)比较将返回true。我想我已经找到了原因。奇怪的是,PHP脚本工作了两次。例如,如果我回显“1”;它输出11。我相信一旦我弄明白了,问题就会解决。(顺便说一句,我不知道为什么会这样。没有循环或什么都没有。)
//Get POST values, appoint to variables/sanitize them

$num_rows = $db->doQuery('SELECT AccountID FROM USERS WHERE AccountID = ?', $user);
if ($num_rows > 0)
{
    $this->Error('REG_USER_IN_USE');
    return;
}

//If everything is correct, add user into database.
$this->Error('REG_SUCCESS');
$controller->Run();
if(cache === true)
    $controller->Run();