通过带有input.onkeyup的javascript检查mysql中是否存在用户名

通过带有input.onkeyup的javascript检查mysql中是否存在用户名,javascript,python,flask,Javascript,Python,Flask,在站点的注册页面上,我想运行javascript来查看数据库中是否存在用户名。这将发生在keyup上。如果它确实匹配,应该有一个html警报来说明这一点。否则,用户可以继续注册 我试过下面的代码。我是新来的 let input = document.querySelector('username'); input.onkeyup = function() { let html = ''; let $result = mysql_query("SELECT * FROM user

在站点的注册页面上,我想运行javascript来查看数据库中是否存在用户名。这将发生在keyup上。如果它确实匹配,应该有一个html警报来说明这一点。否则,用户可以继续注册

我试过下面的代码。我是新来的

let input = document.querySelector('username');
input.onkeyup = function() 
{
    let html = '';
    let $result = mysql_query("SELECT * FROM users WHERE username = username");
    if (input.value == $result) 
    {
        alert("Username already taken");
    }
};

我以为会发生什么事。但是什么都不行。

好吧,我在这里看到了很多问题。首先,您试图在同步上下文中执行异步操作

免责声明:我不是一个PHP人,mysql_查询似乎是PHP?,所以如果这是你想做的,我可能不是你的人。如果不是这样,如果您希望mysql_查询是一个函数,那么您需要在其他地方定义它

让我们从console.loging开始:

在可能生成$result之后立即记录它。那是什么意思?我猜它是未定义的或空的,因为数据库查询几乎总是异步的。 console.log您的input.value。你认为应该是这样吗?我不能告诉你有多少次我做了一些愚蠢的事情,比如把我的div拼错了。因为username不是一个标准的DOM元素,所以我非常希望您在这里能够像document.querySelector'username'那样使用id,或者像document.querySelector'input[name=username]'那样使用名称。 最后,我不是一个真正的DB爱好者,但是你的SQL语法让我和其他用户感到困惑:在这里,请随意称呼我为白痴!。您正在传入一个字符串文本,该文本在username=username的users表中查找。这里有一个问题,但是假设您的表实际上有一个“username”列,我相信这将只查找用户名为username的用户。换句话说,如果您在输入框中键入的内容不完全是用户名,则此操作将失败。我相信,你想做的是这样的: //首先,假设mysql\u查询是您定义的异步JavaScript函数。 mysql_query`SELECT*FROM username=${input.value}`的用户,functionerr,response{ 伊弗{ 警报“检查名称时出错!”; }否则,如果响应长度为{ //假设查询返回任何内容,这意味着它找到了匹配的==重复名称 警报“名称已存在!”; }否则{ //什么都不要做! } };