获取:POST json数据
我正在尝试使用fetch发布 JSON对象。
据我了解,我需要将一个字符串化的对象附加到请求的主体,例如:
fetch("/echo/json/",{
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
method: "POST",
body: JSON.stringify({a: 1, b: 2})
})
.then(function(res){ console.log(res) })
.catch(function(res){ console.log(res) })
当使用jsfiddle的json回显时,我希望看到返回的对象({a: 1, b:2}
),但这不会发生-chrome devtools甚至不会在请求中显示JSON,这意味着它没有被发送。
回答:
借助ES2017 async/await
支持,这是如何实现POST
JSON负载的方法:
(async () => { const rawResponse = await fetch('https://httpbin.org/post', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({a: 1, b: 'Textual content'})
});
const content = await rawResponse.json();
console.log(content);
})();
但是,问题是由 引起的
原始答案如下。
chrome devtools甚至没有在请求中显示JSON
, Chrome 46中修复的chromedevtools的错误。
该代码可以正常工作-它正确地发布了JSON,只是看不到。
我希望看到我寄回的物件
那是行不通的,因为那不是JSfiddle的echo的正确格式。
正确的代码是:
var payload = { a: 1,
b: 2
};
var data = new FormData();
data.append( "json", JSON.stringify( payload ) );
fetch("/echo/json/",
{
method: "POST",
body: data
})
.then(function(res){ return res.json(); })
.then(function(data){ alert( JSON.stringify( data ) ) })
对于接受JSON有效负载的端点,
以上是 获取:POST json数据 的全部内容, 来源链接: utcz.com/qa/432922.html