向 Flask 提交多个表单(400 BAD REQUEST)
Submitting multiple forms to Flask (400 BAD REQUEST)
我目前正在学习 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。
任何帮助或指点都会很棒。谢谢!
当您收到 400 Bad Request 时,通常是因为一些完整的逻辑,例如请求对象使用了不正确的键。在您的情况下,后端和 XHR 请求之间的案例不匹配。
我还建议使用 request.form.get(value),因为它会 return None 而不是引发 400 Bad Request 这样的错误。
我目前正在学习 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。
任何帮助或指点都会很棒。谢谢!
当您收到 400 Bad Request 时,通常是因为一些完整的逻辑,例如请求对象使用了不正确的键。在您的情况下,后端和 XHR 请求之间的案例不匹配。
我还建议使用 request.form.get(value),因为它会 return None 而不是引发 400 Bad Request 这样的错误。