Node.js(Express API):req.body.myobject 未定义且无法正常工作
Posted
技术标签:
【中文标题】Node.js(Express API):req.body.myobject 未定义且无法正常工作【英文标题】:Node.js (Express API): req.body.myobject is undefined and not working 【发布时间】:2015-10-04 13:22:26 【问题描述】:我在 NodeJS (ExpressJS) 中有我的服务器端,它实现了一个 POST 方法,该方法应该获取我从客户端发送的对象并对其进行处理:
router.route('/email')
// create a mail (accessed at POST http://localhost:8080/api/email)
.post(function(req, res)
var email = req.body.email;
// do things with email...
// but it's complaining because it says it's 'undefined'
);
req.body.email
应该是具有这种结构的 JSON 对象:
"destinatary": "my@example.com", "subject": "mysubject", "message": "mymessage"
我使用 jQuery 实现了一个非常简单的 Web 客户端来测试我的 API,其中 AJAX 调用是这样完成的:
function sendEmail(email)
$.post(MYAPP.service_uri+"/email",
email,
function(data, status)
alert("Data: " + data + "\nStatus: " + status);
);
在客户端,email
是一个对象,所以它不是 undefined
... 但我每次在服务器端都会收到以下错误:
TypeError: Cannot read property 'destinatary' of undefined
【问题讨论】:
@Tushar 我在正文中发送 JSON 对象 【参考方案1】:因为您没有发送任何名为 email
的内容 - 您正在附加一个变量名称为 email
的对象
要修复您的 AJAX 调用,您可以执行以下操作:
$.post(MYAPP.service_uri+"/email",
email: email, //OBJECT, KEYVAL PAIR
function(data, status)
alert("Data: " + data + "\nStatus: " + status);
);
原始代码中的对象将存储为纯 req.body
- 而不是 req.body.email
如果不想修复 AJAX 调用,可以修复服务器:
router.route('/email')
// create a mail (accessed at POST http://localhost:8080/api/email)
.post(function(req, res)
var email = req.body;
);
任何一个都可以。
【讨论】:
完全...我错过了!通过获取req.body
,它起作用了。谢谢!以上是关于Node.js(Express API):req.body.myobject 未定义且无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
Node.js, express, html form req.body 未定义
CRUD RESTful API(Node.js,Express,Mongodb)中的删除错误
在express,node.js中使用req.ip将IP地址列入白名单是不是安全?