express4 bodyparser post数组项是udefined

时间:2016-02-08 12:55:42

标签: jquery ajax node.js express body-parser

我有一个快速应用程序,它使用bodyParser从post请求中获取json内容。如果我写出整个身体的内容,它看起来像这样:

{
  'device[group]': 'TESTGROUP',
  'device[name]': 'TESTNAME',
  'events[http][address]': 'http://192.168.77.11/api'
}

在我写出事件的内容之后,立即给出了我未定义的内容。我做错了什么?

我的代码如下:

app.post('/settings', function(req, res) {
    console.log(req.body);
    console.log(req.body.events); // undefined

客户端代码:

$.ajax({
            url: postURL,
            data: {
                    "device": {
                        "group": $('#devicegroup').val(),
                        "name": $('#devicename').val()
                    },
                    "events": {
                        "http": {
                            "address": $('#httpaddress').val()
                        }
                    }
            },
            type: 'POST',
            dataType: 'json'
        }).success(function(response) {
            console.log(response);
        });

1 个答案:

答案 0 :(得分:1)

您需要将数据发送为String,而不是PlainObject

$.ajax({
            url: postURL,
            data: JSON.stringify( {
                    "device": {
                        "group": $('#devicegroup').val(),
                        "name": $('#devicename').val()
                    },
                    "events": {
                        "http": {
                            "address": $('#httpaddress').val()
                        }
                    }
            } ),
            type: 'POST',
            contentType: 'application/json',
            dataType: 'json'
        }).success(function(response) {
            console.log(response);
        });