【发布时间】:2019-07-22 14:56:07
【问题描述】:
TL;DR => 底部代码框中的代码有什么问题。
我正在尝试调用一个名为“检查”的函数,该函数将检查所填写的用户名是否不为空并且在我的数据库中不存在。这个检查函数如下所示:
@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 缺乏经验。首先,我有这个相当简单的 HTML 代码来设置注册页面:
<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 来调用,以检查用户名是否已经存在。如果不是,则检查函数应以 JSON 格式发回“真”。之后应提交表格。如果它已经存在,我想发送警告消息说“这个用户名已经被占用”并且我想阻止表单被提交。这是我在 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>
谢谢!
【问题讨论】:
-
这应该是错误的,因为在
username='之后需要一个+。应该是username='+input.value, -
let input document.querySelector('username');缺少等号。 -
您的 Javascript 包含许多语法错误;这是更正后的代码:jsfiddle.net/a9Lhwbvf
标签: javascript python jquery json