向Flask提交多种表单(400错误请求)

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

我正在学习Flask。

我的HTML中有多个表单,我想将表单数据发送到Flask的后端。我已经成功地从一个表单中成功发送了数据,但是我很难让它一次提交多个表单。

这是获取表单数据并附加每个表单的JavaScript:

function createUser() {
  var xhr = new XMLHttpRequest();
  var formData = new FormData()
  formData.append("userID", document.getElementById("newUserID").value);
  formData.append("userEmail", document.getElementById("newUserEmail").value);
  formData.append("userFirstName", document.getElementById("newUserFirstName").value);
  formData.append("userLastName", document.getElementById("newUserLastName").value);
  formData.append("userAvatar", document.getElementById("newUserAvatar").value);

  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status >= 200 && xhr.status < 300) {
      alert(xhr.responseText)
    }
  }
  xhr.open("POST", "api/add", true);
  xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
  xhr.send(formData);
}

这是我的烧瓶:

@app.route('/api/add', methods = ['GET', 'POST'])
def post_user():
  if request.method == "POST":
    user = (request.form['UserID'],
            request.form['UserEmail'],
            request.form['UserFirstName'],
            request.form['UserLastName'],
            request.form['UserAvatar'])
  else:
    return render_template('users.html')
  user.append(user_list)

如果我猜错了,那应该是formData。

任何帮助或指针都很好。谢谢!

javascript flask xmlhttprequest form-data request.form
1个回答
0
投票

[当您收到400错误请求时,通常是因为一些不可分割的逻辑,例如不正确的键被用于请求对象。在您的情况下,后端和XHR请求之间的大小写不匹配。

我还建议使用request.form.get(value),因为它会返回None而不是引发类似400 Bad Request的错误。

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