javascript - 烧瓶 request.get_json() 没有收到来自 $.post() 请求的任何内容
问题描述
我正在尝试在 JavaScript 和 Python 之间传递数据,并且我正在通过使用 JSON 变量来做到这一点,但似乎每当我POST
从 JavaScript 发出请求时,request.get_json()
Python 接收器方法中的任何内容都不会None
在我 print 时进行打印request.get_json()
。
Python 方法可以在将某些内容返回给 JS 的情况下工作,但它始终是None
. $.post()
我的方法做错了吗?
JavaScript$.post()
调用:
var items = {"robotCoor": {"robot_x": 1, "robot_y": 1},
"gridParams": {"goal_y": 0, "size_x": 16, "size_y": 16, "goal_x": 0},
"obsParams": {"obs_x3": 0, "obs_x4": 0, "obs_y4": 0, "obs_x2": 0, "obs_x1": 0, "obs_y1": 0, "obs_y2": 0, "obs_y3": 0},
"aiParams": {"layers": 0, "learning_rate": 0, "speed": 0}
};
var stuff = JSON.stringify(items);
console.log(stuff); #prints the correct thing
$.post("receiver", stuff, function( data ) {
console.log(stuff); #prints the correct thing
alert("Data: " + data); #alerts with "Data: None"
});
Python接收器方法:
@app.route("/receiver", methods = ["POST"])
def receiver():
if request.method == "POST":
stuff = request.get_json()
print(stuff) #prints None
stuff = str(stuff)
print(stuff) #prints None
return stuff
解决方案
在您的 JavaScript 中,将请求的 Content-Type 设置为application/json
. 否则get_json
将永远返回None
。一种方法是执行以下操作[1]
$.ajaxSetup({
contentType: "application/json; charset=utf-8"
});
或者,您可以尝试使用get_json(force=True)
[2]强制 Flask 忽略内容类型
推荐阅读
- ios - Ionic Cordova OpenTok 无法从 IOS 发布视频
- haskell - RandomGen 的 split 函数的确切语义应该是什么?
- python-3.8 - 在python中解析文本文件输入
- sql - 使用 PostgreSQL 12 在 jsonb 列的数组字段上搜索部分值
- r - 使用函数在几个原始字段上改变 df 以生成几个新列
- html - 正确对齐/定位标题图像背景
- delphi - 需要 chilkat rsa SignHashENC (sha256) 替代品
- javascript - 如何调整 discord bot 试图在指定角色内踢出超过 bot 应有的次数?
- google-cloud-platform - 通过 Google Compute Engine 和 Cloud Logging 代理使用日志严重性
- javascript - 获取元素的宽度和高度,并使其成为 javascript 变量