2016-02-08 3 views
0

У меня есть приложение, которое использует bodyParser для получения содержимого json из почтового запроса. Если я выписывать содержание всего тела это выглядит следующим образом:express4 bodyparser post array item isude ude

{ 
    '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); 
     }); 
+0

Попробуйте, как это, как события - это 2-й массив console.log (req.body.events [http] [address]); –

+0

- установлена ​​зависимость 'bodyparser'? если нет, тогда запустите '$ npm install bodyparser --save' first – narainsagar

ответ

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); 
     }); 
+0

Я полагаю, что после этого мне нужно использовать JSON.parse (req.body) на сервере, правильно? К сожалению, у меня есть misteryous исключения из json parser, например «Неожиданный токен: u» Кажется, что строка не содержит хорошо сформированную строку json. – Perrier

+0

@Perrier Нет, вам нужно просто установить 'contentType' в' application/json' (см. Обновление). –