Node.js(快速API):req.body.myobject未定义,不能正常工作

我有我的服务器端在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"} 

我已经实现了一个非常简单的web客户端使用jQuery来testing我的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

因为你没有发送任何称为email东西 – 你正在附上一个variables名为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; }); 

任何一个将工作。