我正在尝试使用fetch POST一个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) })
Run Code Online (Sandbox Code Playgroud)
当使用jsfiddle的json echo时,我希望看到我发送的对象({a: 1, b: 2}
),但这不会发生 - chrome devtools甚至不会将JSON显示为请求的一部分,这意味着它没有被发送.
我的所有项目都突然发生了这种情况.
每当我使用express和body-parser在nodejs中发帖时req.body
都是一个空对象.
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded())
// parse application/json
app.use(bodyParser.json())
app.listen(2000);
app.post("/", function (req, res) {
console.log(req.body) // populated!
res.send(200, req.body);
});
Run Code Online (Sandbox Code Playgroud)
通过ajax和postman它总是空的.
但是通过卷曲
$ curl -H "Content-Type: application/json" -d '{"username":"xyz","password":"xyz"}' http://localhost:2000/
Run Code Online (Sandbox Code Playgroud)
它按预期工作.
我尝试手动设置Content-type : application/json
前者,但我总是得到400 bad request
这让我发疯了.
我认为这是在身体解析器中更新的东西,但我降级了,但没有帮助.
任何帮助表示感谢,谢谢.
假设我有一个包含一些输入的表单:
<form action="demo_post_enctype.asp" method="post" >
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)
如果我提交此表单:浏览器使用哪种编码类型?
是否有明确定义的默认类型?
还是每个浏览器都选择自己的 enctype(当然是在三个允许的类型中)?