【发布时间】:2019-12-28 00:48:09
【问题描述】:
我有一个 HTML 表单来输入用户名/密码来注册网站。我正在尝试实现 javascript/JQuery $.get 以发送 HTTP GET 以检查用户名是否已在使用中。在服务器端,“用户名”值(由 request.form.get() 提取)返回为 None。 javascript 源代码在 HTML 页面上似乎也没有响应。
Javascript如下:
var username = document.getElementById("username");
var inputForm = document.getElementById("form");
document.getElementById("submit").addEventListener("click", function(event) {
event.preventDefault()
});
inputForm.onclick = function(data) {
$.get("/check?username=" + username.value, function() {
alert("CHECKING")
if (data == false) {
inputForm.submit();
}
else {
alert("Sorry - that username is taken!");
}
});
};
后端的 Python (Flask) 如下:
@app.route("/check", methods=["GET"])
def check():
"""Return true if username available, else false, in JSON format"""
print("***RUNNING CHECK***")
# get username from web form
username = request.form.get("username")
print(username)
# check that username is longer than 1, then pull list from DB to check against
if len(username) > 1:
usernames = db.execute("SELECT username FROM users")
# return false if username is available
if username in usernames:
return jsonify(False)
# return true if username is NOT available
else:
return jsonify(True)
这是回来的:
TypeError: 'NoneType' 类型的对象没有 len() INFO:werkzeug:192.168.179.21 - - [22/Aug/2019 16:20:41] "GET /check?username=ajd HTTP/1.0" 500 -
【问题讨论】:
-
您通过
QueryString发送用户名,而不是form-data。我不知道python,但我几乎可以肯定这就是你的问题所在。可能:request.args.get('username')而不是request.form.get("username")
标签: javascript python flask