javascript - 使用 JavaScript 时烧瓶 request.get_json(force=True) 只会引发 BadRequest?
问题描述
我已经查看了这些 Stack Overflow 链接Flask request.get_json() raise BadRequest,Get raw POST body in Python Flask 不管 Content-Type header,以及How to get POSTed JSON in Flask? ; 但是,他们没有回答我的问题。当我使用 Postman、Python 或 curl 时,我的烧瓶代码可以工作;但是,当我使用 JavaScript 时,它不起作用并且我收到 BadRequest 错误。April
首先打印;但是,该错误会在网页上弹出。当我尝试运行时,json.loads(request.data, strict=False)
我得到了这个 jinja2 错误:json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
. 我认为这可能是我正在使用的 Javascript 代码。是否有可能同时运行请求和表单提交可能是问题?
路线.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'])
打印无
解决方案
我最终添加到现有表单:
$("#form").submit( function(eventObj) {
$("<input />").attr("type", "hidden")
.attr("name", "month")
.attr("value", "April")
.appendTo("#form");
return true;
});
推荐阅读
- powershell - 具有特殊字符的 Powershell 句柄变量(左括号)
- spring - 我们可以在高流量多租户云应用程序中使用休眠吗?
- java - 为什么我会收到此错误。请有人告诉我
- php - php格式日期转换成mysql格式插入
- angular - 如果 router.navigate 返回 false Angular,我如何路由到另一条路由
- forms - render() 得到了一个意外的关键字参数 'renderer' - DateTimePicker - Django 1.11 -> 3.1 迁移
- spring - HttpServletRequest 在 Aspect 中使用时抛出错误
- node.js - 启动时未加载最新安装的节点版本
- php - PHP/ExtJS - 将带有 unicode 的字符串转换回其原始字符
- typescript - `$s` 不是一个有效的视频,尽管有 png url