$('#send-button').on('click', () => {
$.post('/send-data', JSON.stringify({ a: 10, b: 20 }), (data, status) => {
console.log(data)
})
})
const express = require('express')
const app = express()
app.use(express.json())
app.use(express.static(__dirname))
app.post('/send-data', (req, res) => {
console.log(req.body)
res.send(JSON.stringify(req.body))
})
app.listen(3000, () => {
console.log(`Listening on port 3000...`)
})
单击按钮时,客户端和服务器都将{ a: 10, b: 20 }
打印到控制台。
单击按钮时,客户端和服务器都将{}
打印到控制台。
我为什么会得到这个结果?
EDIT:我没有使用body解析器。从Express 4.16开始不再需要app.use(bodyParser.json())
。提出的重复问题询问有关使用body-parser进行快速表达4.16之前的问题,并且答案对我的用例不起作用。
导入body-parser
并添加到您的中间件,例如:
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.post('/send-data', (req, res) => {
console.log(req.body)
res.send(JSON.stringify(req.body))
})
没有使用过jQuery,但是可以肯定的是,在发布时,您不必认为需要字符串化:
$.post( "/send-data", { a: 10, b: 20 })
.done(function( data ) {
console.log(data)
});