[英]POST request body is empty on server
我正在嘗試使用 XMLHttpRequest 從客戶端 javascript 發出 AJAX 請求。 以下是它的代碼:
document.getElementById('myform').onsubmit=function(){
var http = new XMLHttpRequest();
var text = document.getElementById('myinput').value;
console.log(text);
http.onreadystatechange = function(){
if(http.readyState === 4 && http.status === 200){
location.reload();
}
};
http.open('POST','/todo',true);
http.setRequestHeader("Content-Type", "application/json");
var obj = {
item:text
};
http.send(JSON.stringify(obj));
}
這工作正常,沒有任何錯誤。 但是,在服務器端,當我嘗試將請求正文記錄到控制台時,它顯示為空的 object。 有人可以幫我弄這個嗎? 以下是處理 post 請求的服務器端代碼:
app.post('/todo',urlencodedParser, function(req,res){
console.log(req.body); // This logs an empty object to the console!
newItem = Todo(req.body);
newItem.save(function(err,data){
if(err) throw err;
res.json(data);
});
});
JSON 編碼和 URL 編碼是不同的。
如果您希望使用 JSON 編碼發送數據,那么您必須使用適當的中間件接收它:
const bodyParser = require('body-parser');
app.post('/todo', bodyParser.json(), function(req,res){
console.log(req.body); // This logs an empty object to the console!
newItem = Todo(req.body);
newItem.save(function(err,data){
if(err) throw err;
res.json(data);
});
});
它很可能與 jQuery 一起使用,因為 urlencoding 是$.post
的默認行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.