Я смотрел на эти ссылки переполнения стека Flask request.get_ json () повышение BadRequest , Получить необработанное тело POST в Python Flask независимо от типа содержимого заголовок и Как получить POSTed JSON in Flask? ; однако они не отвечают на мою проблему. Когда я использую Postman, Python или curl, мой код flask работает; однако, когда я использую JavaScript, это не работает, и я получаю ошибку BadRequest. April
печатает сначала; однако ошибка появляется на веб-странице. Когда я пытаюсь запустить json.loads(request.data, strict=False)
, я получаю эту ошибку jinja2: json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
. Я думаю, что это может быть Javascript код, который я использую. Возможно ли, что одновременный запуск запроса и отправка формы могут быть проблемой?
rout.py
@app.route('/calendar/', methods=['GET', 'POST'])
def calendar():
if request.method == 'POST':
data = request.get_json(force=True)
print(data['month'])
if form.validate_on_submit():
pass
html
<form action="" onsubmit="myFunction()" method="POST">
</form>
function myFunction() {
var data = "{\"month\":\"April\"}";
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", window.location.href);
xhr.setRequestHeader("Content-Type", "application/javascript");
xhr.setRequestHeader("Cookie", "session=eyJfZnJlc2giOmZhbHNlLCJjc3JmX3Rva2VuIjoiNmM5MmIxNmFkYWIyMWZmZjk3MWE4MmJkZTViNTc1M2ZmMDNiY2MxNyJ9.Xo0X5Q.bzl4ihYLaHjUqmiIc6WCwFUOP_8");
xhr.send(data);
}
РЕДАКТИРОВАТЬ #####
content = request.get_json(silent=True)
print(content['month'])
отпечатков нет