Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js(Express API):req.body.myobject未定义且不工作_Javascript_Jquery_Json_Node.js_Express - Fatal编程技术网

Javascript Node.js(Express API):req.body.myobject未定义且不工作

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...

我的服务器端位于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);
    });
}
在客户端,
电子邮件
是一个对象,因此它不是
未定义的
。。。但每次服务器端出现以下错误时,我都会收到:


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
它工作了。非常感谢。