提问人:Anushka.N12 提问时间:8/23/2023 更新时间:8/23/2023 访问量:402
POST请求不适用于AJAX和Flask,出现错误415
POST request not working with AJAX & Flask, giving error 415
问:
我是 flask 和 js 的新手,最近几天一直在尝试将数据从表单发布到 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 数据,因为请求 Content-Type 不是“application/json”。我已经多次提到内容类型,所以我不明白为什么它不被接受。
答:
0赞
Yash
8/23/2023
#1
您似乎多次使用相同的变量,这会导致第一个声明的变量被取消。尝试使用以下解决方案。
如果仍然不起作用,请尝试使用
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);
}
评论
0赞
Anushka.N12
8/25/2023
试过了,没有区别:(我忘了提到的一些细节 - 表单标签有 method = “post”,还有一个用于 jquery 的脚本标签,因为我使用的是 ajax。
评论
formdata
formdata
console.log(formdata)