我正在使用快递服务器,并希望使用XMLHttpRequest从前端向其发送数据。 后端看起来像这样
const app = express()
const port = 3000
var bodyParser = require('body-parser')
// To parse json
app.use(bodyParser.json());
app.get('/',function(req,res){
res.send('Hello World!')
})
app.post('/',function(req,res){
res.send('This is a post request')
console.log(req.body)
})
app.listen(port, function(){
console.log(`Example app listening at http://localhost:${port}`)
})
和前端看起来像这样
console.log(JSON.stringify(dataObject))
let xhr = new XMLHttpRequest();
xhr.open("POST","http://localhost:3000/");
xhr.send(JSON.stringify(dataObject))
xhr.onload = function(){
alert(xhr.response);
}
}
我在Express Console上得到空的大括号输出。 请帮忙
答案 0 :(得分:1)
一个简单的更改就可以使您的请求正常工作,您需要在请求上设置content-type头,以便在服务器上激活JSON解析器,只需一行!
xhr.setRequestHeader('content-type', 'application/json');
您的客户代码现在看起来像:
let dataObject = { "foo": "bar" };
console.log(JSON.stringify(dataObject))
let xhr = new XMLHttpRequest();
xhr.open("POST","http://localhost:3000/");
xhr.setRequestHeader('content-type', 'application/json');
xhr.send(JSON.stringify(dataObject))
xhr.onload = function(){
alert(xhr.response);
}