從客戶端我做:Express.js:POST數據作爲req.body對象的KEY而不是req.body的VALUE?
$.ajax({
url: '/create',
type: 'POST',
data: JSON.stringify({
theme: "somevalue",
snippet: {
name: "somename",
content: "somevalue"
}
}),
complete: function (response)
{
}
});
服務器(node.js/express.js
)我正在做的事情:
var app = express();
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
.......
...
app.post('/create', function (req, res)
{
var dataReceived = req.body;
});
我預期的dataReceived
值是:
{
"theme" : "somevalue",
"snippet" : {
"name": "somename",
"content" : "somevalue"
}
}
取而代之的是dataReceived
的值是:
{
'{"theme":"somevalue","snippet":"name":"somename","content":"somevalue"}}': ''
}
這真的很奇怪,我找不到我做錯了什麼。有任何想法嗎?
從BodyParser module documentation:
bodyParser.urlencoded(選項)
返回中間件,只有解析urlencoded的機構。此解析器只接受身體的UTF-8編碼,並支持gzip的自動填充和壓縮編碼。
包含解析數據的新正文對象填充在中間件(即req.body)之後的請求對象 上。該對象將包含鍵值對,其中的值可以是字符串或數組 (當擴展爲false時)或任何類型(擴展爲true時)。
這與我的問題有關嗎?
需要JSON.stringify對前端的要求。 – Safari