如何使用JavaScript HTML发送和接收POST请求

如何使用JavaScript HTML发送和接收POST请求,javascript,python,flask,Javascript,Python,Flask,所以我一直在寻找一些时间,一直在想。如何添加向外部站点发送POST数据的javascript,以及如何使外部站点接收POST数据 我试过了 让数据={元素:“钡”}; 取回(“http://localhost:5000/newCheckout", { 方法:“张贴”, 正文:JSON.stringify(数据) })。然后(res=>{ log(“请求完成!响应:”,res); }); 您正在发送JSON数据,但试图检索flask中的表单数据。尝试在flask中使用request.json(

所以我一直在寻找一些时间,一直在想。如何添加向外部站点发送POST数据的javascript,以及如何使外部站点接收POST数据

我试过了


让数据={元素:“钡”};
取回(“http://localhost:5000/newCheckout", {
方法:“张贴”,
正文:JSON.stringify(数据)
})。然后(res=>{
log(“请求完成!响应:”,res);
});

您正在发送JSON数据,但试图检索flask中的表单数据。尝试在flask中使用
request.json()
(请参阅如何在flask中接收不同的数据类型)

您可能需要在javascript中将
内容类型
标题设置为
application/json
,这样才能工作。例如:

fetch(“http://localhost:5000/newCheckout", {
方法:“张贴”,
正文:JSON.stringify(数据),
标题:{
“内容类型”:“应用程序/json”
}
})。然后(res=>{
log(“请求完成!响应:”,res);
});

更多关于发生了什么的细节

JSON看起来像这样:
{“x:1,“y:2}
表单编码数据如下所示:
x=1&y=2
当您向服务器发送数据时,您只是向它发送一个字符串。您可以发送该字符串中的任何内容,但如果您发送的是常见格式(如JSON)或表单编码数据,通常也会设置
内容类型
标题,以便服务器知道它接收的数据类型(这一点很重要,因为有时服务器支持多种数据类型)

Flask将检查内容类型标题,并相应地解析数据。他们根据发送的数据类型选择将结果数据放置在请求对象的不同位置,因此您必须确保查找正确的位置以获得所需的数据


现在,您已经对其进行了编码,这样客户端将发送一大块纯文本(您没有发送任何特定的内容类型),而服务器需要表单编码的数据。

您不能在浏览器中使用javascript接收POST请求(即HTML)-您可以接收POST请求的结果。。。您在broswer developer tools控制台中看到了什么错误?您需要启用CORS。@JaromandaX我想接收结果这就是我的意思,那么如何接收?您现在接收到了什么?检查browser developer tools控制台以查看发生了什么Hanks!出于某种原因,request.json或request.json()不起作用,但request.get_json(force=True)起作用了!再次感谢@Oze-这可能是因为服务器没有接收到内容类型头-可能它没有在客户端上正确设置?不管怎样,很高兴你能找到解决办法。