POST 请求不适用于 AJAX 和 Flask,给出错误 415

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

我是 Flask 和 js 的新手,最近几天一直在尝试将数据从表单 POST 到 API。

以下是 HTML 文件脚本标签中提交按钮的代码:

function onclick()  {
  var formdata = {
    "name": $("#fnamei").val(),
    "email": $("#email").val(),
    "pnum": $("#password").val(),
    "dob": $("#dob").val()
  };
  formdata = {
    type: "POST",
    contentType: "application/json",
    headers: {                                  //added headers later to try
        'Accept': 'application/json',
        'Content-Type': 'application/json' 
    },
    data: JSON.stringify(formdata),
    body: JSON.stringify(formdata),     //added body later to try
    dataType: 'json',
    // url: "{{ url_for('login') }}"
    url: "/login"
  };
  $.ajax(formdata);
}

这是app.py文件中的函数:

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    elif request.method == 'POST':
        return request.get_json()

当我提交表单时,收到错误 415:不支持的媒体类型 - 未尝试加载 JSON 数据,因为请求内容类型不是“application/json”。我多次提到内容类型,所以我不明白为什么它不被接受。

python jquery ajax flask post
1个回答
0
投票

您似乎多次使用同一个变量,这导致第一个声明的变量被取消。尝试使用以下解决方案。

如果还是不行请尝试使用

data : formdata1 
。希望这能成功:)

function onclick()  {
  var formdata1 = {
    "name": $("#fnamei").val(),
    "email": $("#email").val(),
    "pnum": $("#password").val(),
    "dob": $("#dob").val()
  };
  var formdata2 = {
    type: "POST",
    contentType: "application/json",
    headers: {                                  
        'Accept': 'application/json',
        'Content-Type': 'application/json' 
    },
    data: JSON.stringify(formdata1),
    //body: JSON.stringify(formdata1),     
    dataType: 'json',
    // url: "{{ url_for('login') }}"
    url: "/login"
  };
  $.ajax(formdata2);
}

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