我正在使用FlaskWeb应用程序工作,而我在处理AJAX POST请求时遇到了问题.我是一个注册页面的工作.当我单击表单上的提交按钮时,什么也没有发生,并且在浏览器的开发人员工具的网络选项卡中没有XHR条目,也没有控制台条目.我已经重新判断了我的代码,但我无法确定问题所在.有没有人能帮我解决这个问题?

请在下面找到我的代码的相关部分:

#app.py

from flask import Flask, render_template, request

app = Flask(__name__)

from user import routes

@app.route('/', methods=['GET', 'POST'])
def home():
    if request.method == 'GET':
        return render_template("login/Home.html")
    else:
        print("do not know")

# @app.route('/dashboard/')
# def dashboard():
#     return render_template("login/dashboard.html")

if __name__ == "__main__":
    app.run(debug=True)

创建了用于管理模型类及其路径的用户文件夹

#user/models.py
from flask import Flask, jsonify

class User:
    def signup(self):
        user ={
            "_id":"",
            "name":"",
            "email":"",
            "password":""
        }
        return jsonify(user), 200

\#user/routes.py

from flask import Flask
from __main__ import app
from user.models import User

@app.route('/user/signup', methods=\['POST'\])
def signup():
user = User()
return user.signup()

The view or HTML code

Base.html

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Bootstrap demo</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
    <script src="/static/js/jquery.js"></script>
    <script src="/static/js/scripts.js"></script>
  </head>
  <body>
    {% block login_content %}
        
    {% endblock login_content %}
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
  </body>
</html>

Home.html

{% extends 'login/Base.html' %}
{% block login_content %}

<div class="container d-flex justify-content-center mt-5">
    <div class="card w-75 d-flex flex-column flex-wrap">
        <div class="container-fluid card-header">
            Featured
        </div>
        <div class="card-body">
            <form class="container-fluid" id = "signup_form" name="signup_form">
                <div class="mb-3 d-md-flex">
                    <label for="register_name" class="form-label col-md-2">Name</label>
                    <input type="text" class="form-control" id="register_name" name="register_name">
                </div>
                <div class="mb-3 d-md-flex">
                    <label for="register_email" class="form-label col-md-2">Email address</label>
                    <input type="email" class="form-control" id="register_email" name="register_email">
                </div>
                <div class="mb-3 d-md-flex">
                    <label for="register_password" class="form-label col-md-2">Password</label>
                    <input type="password" class="form-control" id="register_password" name="register_password">
                </div>
                <!-- <div class="mb-3 form-check">
                    <input type="checkbox" class="form-check-input" id="exampleCheck1">
                    <label class="form-check-label" for="exampleCheck1">Check me out</label>
                </div> -->
                <button type="submit" id="submit_signup_form" class="btn btn-primary">Sign Up</button>
            </form>
        </div>
    </div>
</div>
{% endblock login_content %}

脚本.js脚本.js

$("#signup_form").submit(function(e) {

    var $form = $(this);
    var $error = $form.find(".error");
    var data = $form.serialize();
  
    $.ajax({
      url: "/user/signup",
      type: "POST",
      data: data,
      dataType: "json",
      success: function(resp) {
        // window.location.href = "/dashboard/";
        console.log(resp)
      },
      error: function(resp) {
        // $error.text(resp.responseJSON.error).removeClass("error--hidden");
        console.log(resp)
      }
    });
  
    e.preventDefault();
  });

我查到的是:

  • 我已经验证了jQuery是否包含在内,以及指向JavaScript文件的路径是否正确.

  • 我的服务器正在运行,并且可以通过指定的URL进行访问.

  • Flask路由似乎配置正确,但我在浏览器中没有得到预期的响应.

  • 也在表单ID和表单名称之间更改

如果您能提供任何指导或见解来帮助我解决这个问题,我将不胜感激.提前谢谢您!

推荐答案

按钮ID为submit_signup_form

<button type="submit" id="submit_signup_form" class="btn btn-primary">Sign Up</button>

但在 playbook 里你有signup_form

$("#signup_form").submit(function(e) {

try 将按钮的ID更改为<button type="submit" id="signup_form" ...

Javascript相关问答推荐

自动牌滑杆中最左侧的牌未完全显示

根据密钥中存储的概率在数组内 Select 随机对象

使用脚本标签时的JSDoc智能感知

使脚本兼容于其他YouTube URL格式

回归函数不会迭代到foreach中的下一个元素

在JavaScript中对大型级联数组进行切片的最有效方法?

vscode扩展-webView Panel按钮不起任何作用

Chart.js V4切换图表中的每个条,同时每个条下有不同的标签.怎么做?

Angular 17—每当一个布尔变量变为真时触发循环轮询,只要它保持为真

如何为我的astro页面中的相同组件自动创建不同的内容?

显示图—如何在图例项上添加删除线效果?

无法检测卡片重叠状态的问题

在react JS中映射数组对象的嵌套数据

JSDoc创建并从另一个文件导入类型

在JS中拖放:检测文件

Chart.js-显示值应该在其中的引用区域

如何在ASP.NET项目中使用Google Chart API JavaScript将二次轴线值格式化为百分比

Angular 形式,从DOM中删除不会删除指定索引处的内容,但会删除最后一项

同一类的所有div';S的模式窗口

使用Ace编辑器对子组件实例的native-element 进行Angular 获取时面临的问题