使用Javascript检查$ .get的返回值

问题描述 投票:2回答:1

通过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) - 这表示用户名已被占用

但是现在它正在提交表格。

javascript jquery json
1个回答
0
投票

$.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
    }
  });

})
© www.soinside.com 2019 - 2024. All rights reserved.