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

时间:2019-04-03 17:22:51

标签: javascript jquery json

防止通过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)-这表明用户名已被使用

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

1 个答案:

答案 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
    }
  });

})