2015-02-22 2 views
1

Я пытаюсь опубликовать данные, используя компонент Polymer core-ajax. После того, как вызов «идти()» на ниже данного компонента -Публикация данных с использованием полимера core-ajax

<core-ajax 
      id="createUserAjax" 
      url="/rest" 
      method="POST" 
      body='{"firstName":{{firstName}}, "lastName":{{lastName}}, "email":{{email}}}' 
      on-core-response="{{createUserResponse}}"></core-ajax> 

Обратите внимание, что, его должность, а тело является JSON. Поэтому, естественно, я ожидаю, что тот же JSON будет получен на стороне сервера. Но, к сожалению, на сервере я принимаю -

Body-------> {"{\"firstName\":foo, \"lastName\":bar, \"email\":fooatbar}":""} 

Обратите внимание, что JSON сломан в конце. Над журнального от экспресса-лога файла

rest.post('/', function(req, res){ 
console.log("Body-------> "+JSON.stringify(req.body)); 
     res.send(200); 
}); 

Я думал, что это может быть явным или тела парсера, Мессинг. Но Chrome инструмент разработчика, под заголовком «Форма данных» это выглядит следующим образом -

{"firstName":foo, "lastName":bar, "email":fooatbar}: 

Примечание задн :. Из-за этого сломанного json, на стороне сервера я не могу получить доступ к представленному json как точечную нотацию.

Это ошибка? Или я чего-то не хватает?

+0

попробуйте отправить данные в атрибут params вместо атрибута body. что должно позволить вам правильно получить данные на стороне сервера. –

+0

@ jimidough10: И я, и вы не должны этого делать. Это уничтожит всю цель методов HTTP GET/POST. Что вы предлагаете, используйте GET для достижения функциональных возможностей PUT, конечно, это выполнимо, но это не то, для чего это было сделано. Также он нарушает шаблоны URL REST. Итак, ваше предложение является большим НЕТ НЕТ для меня. –

+0

это не правда. ваш метод задается атрибутом метода и не имеет ничего общего с атрибутами body/params, которые я знаю. params - рекомендуемый атрибут для отправки данных. params = Параметры для отправки на указанный URL, как JSON. body = Необязательный необработанный контент для отправки, когда метод === "POST". все это говорит о том, что содержимое тела не будет отправлено с запросом на получение. мне рекомендовали сотрудники полиции использовать параметры, а не тело с сообщением. Http: // StackOverflow.com/questions/24982090/polymer-form-using-paper-input-and-core-ajax –

ответ

1

Измените атрибут body на это, чтобы сделать его действительный JSON:

params='{"firstName":"{{firstName}}", "lastName":"{{lastName}}", "email":"{{email}}"}' 

Вы забыли завернуть значения в кавычки.

+0

Я изменил 'body' тег ниже - ' <ядро-АЯКС ид = "createUserAjax" URL = "/ отдых" метод = "POST" тело = '{ "FirstName": "{{ firstName}} "," lastName ":" {{lastName}} "," email ":" {{email}} "} ' on-core-response =" {{createUserResponse}} ">' Но все равно я получаю такой же вывод, как указано выше - 'Body -------> {" {\ "firstName \": \ "foo \", \ "lastName \": \ "bar \", \ "email \ ": \" [email protected] \ "}": ""} ' –

+0

Да, все в порядке, но вы можете разобрать JSON на своем сервере? – winhowes

+0

Нет, я не могу, потому что JSON на стороне сервера искажен. Все тело JSON стало «ключевым» только из-за окончания «:» –

0

У меня была такая же проблема. Я не знаю, почему полимер делает это плохое тело. Так я нашел такое решение: Чтобы извлечь что

{\"firstName\":foo, \"lastName\":bar, \"email\":fooatbar} 

С этого

Body-------> {"{\"firstName\":foo, \"lastName\":bar, \"email\":fooatbar}":""} 

Я сделал, что

var keys = Object.keys(req.body);

var strobj = keys[0];

var obj = JSON.parse(strobj);

Надежда помощь. К

0

Возможно, вы используете contentType = "application/json" для обработки содержимого как json. В противном случае используется application/x-www-form-urlencoded, и это приводит к завершению ':'.

Надеюсь, это поможет

+0

Опубликовать его в поле для комментариев ... – sheshadri

+0

@shri: Почему это должно быть опубликовано как комментарий? Разве это не ответ на вопрос: «Это ошибка? Или я чего-то не хватает?». Недопустимая часть - это тип содержимого. Проблема с использованием соответствующего типа контента решает проблему. – dral

+0

Это 100% ответ на этот вопрос в отношении выпуска 1.0 с использованием ''. Большое спасибо dral! Прошло 4 часа, пытаясь решить это сегодня. – anthony

Смежные вопросы