防止通过POST提交表单,并在满足条件时提交。 正在提交表单,我不确定如何检查该函数(将HTML输入传递到Python中以检查数据库是否存在用户)(如果不存在则以JSON格式返回,否则返回False)。 / p>
我尝试检查该函数是否为true,在大多数情况下都能正常工作,我想知道它是否为$ .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)-这表明用户名已被使用
但是现在它正在提交表单。
答案 0 :(得分:0)
$.get()
是异步的,因此您无法从check()
返回值
如果响应为true,请在$.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
}
});
})