我正在尝试使用 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));}这工作正常,没有 anny 错误。但是,在服务器端,当我尝试将请求正文记录到控制台时,它显示为一个空对象。有人可以帮我弄这个吗?以下是处理 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); });});
1 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
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.
添加回答
举报
0/150
提交
取消