【发布时间】:2020-11-21 12:01:21
【问题描述】:
我正在尝试使用 JQuery 的 .load() 函数将数据发送到我的 Flask 服务器,并使用它来渲染加载到调用元素中的 <div>。我的电话看起来像这样:
$("#element").load(
"/get_data",
{"info": info} // this is the problem
)
但是,当我尝试在我的 Flask 后端访问这些数据时,数据是字节字符串形式的。 (使用request.get_data() 访问会产生一个字节串,request.get_json() 会产生None)。
这并不让我感到惊讶,因为当我使用 .ajax() 请求时会发生相同的行为。使用 Ajax,我只需使用 data: JSON.stringify({"info":info}) 并将 json.loads 轻松读取的字符串发送到 Flask 后端就好了。令我困惑的是,当我尝试使用.load() 进行相同的数据打包时,对服务器的请求是GET 而不是POST。
根据.load() 的documentation,“如果数据作为对象提供,则使用 POST 方法;否则,假定为 GET。”我不明白为什么作为 JSON 字符串的数据会以这种方式改变 .load() 的行为。
我很想了解这种行为,但我的问题是如何使用 JQuery 的 .load() 将数据作为 JSON 格式的 POST 请求发送到 Flask 后端,或者至少可以读取为一个 json(例如 JSON 字符串)?
【问题讨论】:
-
您是否使用了正确的 Content-Type 标头 (application/json)?
-
这篇文章可能会提供你需要的解决方案stackoverflow.com/questions/53502324/decode-json-in-flask
-
@AndreaPollini 我将如何断言传入请求的内容类型?你不能通过 .load() 这样做,我不清楚你将如何在后端做到这一点。
标签: javascript python jquery json flask