Javascript Node.js(Express API):req.body.myobject未定义且不工作
我的服务器端位于NodeJS(ExpressJS)中,它实现了一个POST方法,该方法应该获取我从客户端发送的对象,并使用它执行操作:Javascript Node.js(Express API):req.body.myobject未定义且不工作,javascript,jquery,json,node.js,express,Javascript,Jquery,Json,Node.js,Express,我的服务器端位于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...
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);
});
}
在客户端,电子邮件
是一个对象,因此它不是未定义的
。。。但每次服务器端出现以下错误时,我都会收到:
TypeError:无法读取未定义的属性“destinatary”
,因为您没有发送任何名为的电子邮件
-您正在附加一个具有变量名的对象电子邮件
要修复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;
});
任何一个都可以。@Tushar我将在body中发送JSON对象。。。我错过了!通过获取
req.body
它工作了。非常感谢。