代码之家  ›  专栏  ›  技术社区  ›  Perrier

express4 bodyparser后数组项已定义

  •  0
  • Perrier  · 技术社区  · 8 年前

    我有一个express应用程序,它使用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 回复  |  直到 8 年前
        1
  •  1
  •   stdob--    8 年前

    您需要将数据发送为 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);
            });