PHP MySQL_return_rows = echos 1然后是0

时间:2011-09-28 07:17:19

标签: php ajax

我正在为PHP处理脚本做一个AJAX帖子。我正在检查MySQL是否返回任何正在进行注册的行。我遇到的问题 - MySQL快速回显1行然后回显0并继续注册,即使存在0行。为什么我看到1行返回,然后快速纠正自己?

$.ajax({
            type: "POST",
            data: "username="+$(this).attr('username')+"password="+$(this).attr('email')+$(this).attr('password')+$(this).attr('passconf'),
            url: "includes/register.php",
            success: function(msg)
            {   
                alert(data);
                $("#result").data($data); 
            }
        });

    });

PHP代码:

    $res = mysql_query("SELECT * FROM users WHERE username = '".$username."'");
                    if (!$res) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}
                    $num = mysql_num_rows($res);
                    echo $num;

1 个答案:

答案 0 :(得分:2)

您的事件处理程序可能无法阻止默认操作,导致表单被提交两次(一次通过ajax,一次通过常规浏览器表单提交)。尝试像这样返回false:

$(login_form).click(function() {
    $.ajax({ ... });
    return false;
});

返回false会阻止默认操作并停止冒泡。如果你想要冒泡仍然适用,你也可以明确地防止这样的默认:

$(login_form).click(function(ev) {
    ev.preventDefault();
    $.ajax({ ... });
});