TL; DR=
我正在尝试调用一个名为“check”的函数,该函数将检查所填写的用户名是否为空,以及我的数据库中是否已经存在该用户名。此检查函数如下所示:
@app.route("/check", methods=["GET"])
def check():
"""Return true if username available, else false, in JSON format"""
# User reached route via POST (as by submitting a form via POST)
if request.method == "GET":
username = request.args.get("username")
usernames = db.execute("SELECT * FROM users")[0][username]
if username is not None and len(username) > 1:
if username not in usernames:
return jsonify(True)
else:
return jsonify(False)
else:
return jsonify(False)
我不知道这段代码是否正常工作,但我想我能做到。问题是我对jQuery缺乏经验。首先,我有一个相当简单的超文本标记语言代码来设置注册页面:
<form action="/register" method="post">
<div class="form-group">
<input autocomplete="off" autofocus class="form-control" name="username" placeholder="Username" type="text">
</div>
<div class="form-group">
<input class="form-control" name="password" placeholder="Password" type="password">
</div>
<div class="form-group">
<input class="form-control" name="confirmation" placeholder="Password" type="password">
</div>
<button class="btn btn-primary" type="submit">Register</button>
</form>
{% endblock %}
现在,我想在尝试提交表单时使用jQuery来调用它,以便检查用户名是否已经存在。如果没有,则check函数应以JSON格式返回“true”。之后应提交表格。如果它已经存在,我想发送一条警告消息,说“这个用户名已经被使用”,我想阻止提交表单。这是我在jQuery中的尝试,有人能告诉我它有什么问题吗?
{% block main %}
<script>
let input document.querySelector('username');
document.querySelector('form').onsubmit = function(event) {
$.get('/check?username=' input.value, function(data)
if data == False:
alert("This username is already taken");
event.preventDefault();
}
</script>
谢谢!
你的代码肯定会给出很多错误...当你使用jQuery时,你可以像这样提交表单
$('form').on('submit' , function(e){
e.preventDefault(); // use it outside `$.get` not inside it
console.log($('input[name="username"]').val()); // get the username value
console.log($(this).serialize()); // get form serialize data
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="/register" method="post">
<div class="form-group">
<input autocomplete="off" autofocus class="form-control" name="username" placeholder="Username" type="text">
</div>
<div class="form-group">
<input class="form-control" name="password" placeholder="Password" type="password">
</div>
<div class="form-group">
<input class="form-control" name="confirmation" placeholder="Password" type="password">
</div>
<button class="btn btn-primary" type="submit">Register</button>
</form>aA
您的Javascript包含许多错误。
首先,让输入document.query选择器(用户名)缺少一个等号,这在进行变量赋值时是必要的。除此之外,您的查询选择器是不正确的,因为它正在寻找用户名元素(不存在)。您应该在DOM中查询具有name属性设置为"username"的控件类的输入元素;查询选择器将是'input.form-control[name="username"]'
。这一行应该是:
let input = document.querySelector('input.form-control[name="username"]');
请参见document.query选择器。
其次,您编写了$.get('/check?username='input.value
,这是不正确的;如果您要连接两个字符串,则应使用运算符。该部分代码应重写为:
$.get('/check?username=' + input.value
第三,对于jQuery.get
的回调函数,当函数表达式需要大括号时,您编写了函数(数据)[code here]
。正确的代码是:
function(data){
//code here
}
第四,你写了if data==False:
.if
Javascript中的语句在括号中有条件,在大括号中有代码执行。应正确写成:
if(data === false){
//do something
}
最后,在调用jQuery的$. get
时,您忘记了结束括号。函数应该在函数名后面用一个开始括号和一个结束括号来调用——即,函数名(/*参数在这里*/)
。你写的
$.get(/*<-this bracket is never closed*/ '/check?username=' input.value, function(data)
if data == False:
alert("This username is already taken");
event.preventDefault();
正确的代码是:
$.get('/check?username=' + input.value, function(data){
//do stuff
});
更正代码:
let input = document.querySelector('input.form-control[name="username"]');
document.querySelector('form').onsubmit = function(event) {
$.get('/check?username=' + input.value, function(data){
if(data === false){
alert("This username is already taken");
event.preventDefault();
}
});
}
我建议你在尝试编写Javascript之前先阅读Javascript教程。此外,调试时应始终检查控制台(Ctrl Shift I),因为控制台将向您指示任何语法错误(或其他错误)及其发生的行。
问题内容: 因此,基本上,我想在注册表格中添加一个功能,该功能将检查数据库中是否已存在该用户名。 我对AJAX有几个问题- 1)我想创建一个AJAX请求on_change函数,所以像这样- 因此,据我所知,我必须在validation.php文件中包含所有在PHP中进行的验证,对吗?是否需要任何特殊的验证,或者只是使用sql语句进行的简单验证- 2)据我所知,我也必须通过$ .ajax传递POST
我已经在谷歌上搜索了两个星期了,没有任何效果。我只想知道如何检查给定的用户名是否存在于我的MySQL数据库表中。表名为用户。但是它似乎绕过了我的if语句,直接添加用户名,导致我的表有相同用户名的重复。我试过很多代码,也试过很多方法。一直在使用MySQL,因为这是我们现在应该使用的。我可以给你我尝试过的任何方法,但这是我第100次尝试的最新方法。请注意,我知道这还没有完全准备好抵御SQL注射,我现在
问题内容: 有没有一种方法可以检测当前用户是否正在使用jQuery / JavaScript使用iPad? 问题答案: iPad检测 通过查看属性,您应该能够检测到iPad用户: iPhone / iPod检测 同样,用于检查iPhone或iPods等设备的属性:
问题内容: 无法让Firebase识别已经输入的用户名。下面的代码显示我正在尝试将输入的用户名与数据库的DataSnapshot进行比较。该代码似乎没有拾取输入的用户名。代码是否错误? 在按钮上单击,我希望能够将用户引导到该错误,并且在该错误唯一之前,不应将该页面推送到下一个活动。 JSON树(如果有帮助) 问题答案: 是异步操作。设置回调后,代码将继续运行,而您尚未获取任何用户名。到您检查mSw
我正在尝试使用Angular检索嵌套Firestore数据库中所有用户的数据。数据库看起来如下所示:用户(id)->posts(id)-{description:这是一个图像,image:imageURL}。
我目前正在安装Firebase应用程序,并能够检索使用该应用程序的所有用户的列表。当用户首次注册该应用程序时,他们需要确认自己的电话号码,就像现在大多数iOS应用程序一样。我正在“用户”节点中存储他们的电话号码。我的问题是如何在Firebase中查询以查看该电话号码是否存在于我的数据库中?基本上,我想根据我生成的电话号码列表和所有联系人列表进行查询 这将允许我显示特定联系人当前是否正在使用该应用程