javascript - 使用 Javascript 检查 $.get 的返回值
问题描述
防止通过 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
}
});
})
推荐阅读
- javascript - Intersection Observer API:如何找到用户正在观察的元素
- node.js - 我如何一起构建反应和节点?
- ios - 如何从 Visual Studio Code 中删除 Github 集成?
- numpy - 重新组合正弦波的相位和幅度?
- r - 根据单独的链接数据框中的变量对数据框行进行分组
- javascript - .map 函数的索引,其中包含方法
- mysql - 从相似的行MYSQL中选择一行
- java - 引导层初始化期间发生错误。plexus.container.default:无效的模块名称:'default' 不是 Java 标识符
- python - 如何使用按钮将图像加载到 kivy 窗口中?
- r - R - 在 plot_ly 中结合 tidy eval 和 tilde 时出错