获取:发布JSON数据

我正在尝试使用fetch发布一个JSON对象

据我所知,我需要在请求正文中附加一个字符串化对象,例如:

fetch("/echo/json/);,
{
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”
},
方法:“发布”;,
正文:JSON.stringify({a:1,b:2})
})
.then(函数(res){console.log(res)})
.catch(函数(res){console.log(res)})

当使用jsfiddle的JSON echo时,我希望看到我发送的对象({a:1,b:2})返回,但这没有发生-chrome devtools甚至没有将JSON显示为请求的一部分,这意味着它没有被发送

借助ES2017的async/await支持,以下是如何POSTJSON负载:

(异步()=&gt{
const rawResponse=等待提取('https://httpbin.org/post', {
方法:“POST”,
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”
},
正文:JSON.stringify({a:1,b:'text content'})
});
const content=await rawResponse.json();
控制台日志(内容);
})();

无法使用ES2017?见@vp_art使用承诺的回答

然而,问题是问一个由一个长期以来已修复的chrome bug引起的问题。
原来的答案如下

ChromeDevTools甚至没有在请求中显示JSON

这才是真正的问题,这是chrome开发工具的一个bug,在chrome 46中修复

这段代码运行良好——它正确地发布了JSON,只是看不见而已

我希望看到我送回来的东西

这不起作用,因为这不是JSfiddle的echo的正确格式

正确的代码是:

var有效负载={
答:1,,
b:2
};
var data=new FormData();
data.append(“json”,json.stringify(payload));
获取(“/echo/json/”,
{
方法:“张贴”,
正文:数据
})
.then(函数(res){return res.json();})
.then(函数(数据){alert(JSON.stringify(数据))}

对于接受JSON有效负载的端点,原始代码是正确的

发表评论