所以我一直在寻找并且一直在想。如何添加将 POST 数据发送到外部站点的 javascript 以及如何让该外部站点接收它?
我试过了
<script>
let data = {element: "barium"};
fetch("http://localhost:5000/newCheckout", {
method: "POST",
body: JSON.stringify(data)
}).then(res => {
console.log("Request complete! response:", res);
});
</script>
并用(Python/Flask)接收它: element = request.form.get('element') 没用
提前致谢!
答案 0 :(得分:0)
您正在发送 JSON 数据,但试图在 Flask 中检索表单数据。尝试在flask 中使用request.json()
(有关如何在flask 中接收不同数据类型,请参阅this question)。
您可能需要在 javascript 中将 Content-Type
标头设置为 application/json
才能使其工作。例如:
fetch("http://localhost:5000/newCheckout", {
method: "POST",
body: JSON.stringify(data),
headers: {
'Content-Type': 'application/json'
}
}).then(res => {
console.log("Request complete! response:", res);
});
关于正在发生的事情的更多细节
JSON 看起来像这样:{"x": 1, "y": 2}
表单编码数据如下所示:x=1&y=2
当您向服务器发送数据时,您只是向它发送了一串字符。您可以在该字符串中发送任何内容,但如果您发送的是通用格式,如 JSON 或表单编码数据,您通常也会设置 Content-Type
标头,以便服务器知道它正在接收的数据类型(这很重要,因为有时服务器会支持多种数据类型)。
Flask 将检查 Content-Type 标头,并相应地解析数据。他们选择将结果数据放在请求对象上的不同位置,具体取决于发送的数据类型,因此您必须确保在正确的位置查找以获取所需数据。
现在,您已经对其进行了编码,以便客户端将发送一大块纯文本(您没有发送任何特定的内容类型),而服务器正在等待表单编码数据。