通过POST阻止提交表单,并在符合条件后提交。表单正在提交,我不知道如何检查函数(如果用户存在,它将HTML输入传递给Python检查数据库(如果不存在,则以JSON格式返回true,如果存在则返回false)。
我已经尝试检查函数是否为真,这对于大多数情况都有效,我想知道它是否是$ .get是一个奇怪的情况?
document.getElementById("register").addEventListener("click", function(event) {
event.preventDefault();
let input = document.getElementsByName("username");
function(check) {
$.get('/check?username=' + input.value, function(data) {
document.querySelector('ul').innerHTML = data;
})
if (check()) {
this.submit();
}
else {
alert ("username is taken!");
return false;
}
@app.route("/check", methods=["GET"])
def check():
# Check the http parameter for username.
username = request.args.get("username")
check = db.execute("SELECT username FROM users WHERE username = :username", username=username)
if not check:
return jsonify(True)
else:
return jsonify(False)
我希望警报闪烁并阻止表单提交函数运行并返回json(False) - 这表示用户名已被占用
但是现在它正在提交表格。
$.get()
是异步的,所以你不能从check()
返回一个值
相反,如果响应为真,则在$.get()
回调中提交
document.getElementById("register").addEventListener("click", function(event) {
event.preventDefault();
let input = document.getElementsByName("username")[0];
$.getJSON('/check?username=' + input.value, function(data) {
if (data) {
document.querySelector('**formSelector**').submit()
} else {
// notify user
}
});
})