后端未从xhr请求接收数据

时间:2020-04-23 07:36:22

标签: node.js express xmlhttprequest

我正在使用快递服务器,并希望使用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上得到空的大括号输出。 请帮忙

1 个答案:

答案 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);
}