使用polymer core ajax发布数据

使用polymer core ajax发布数据,polymer,Polymer,我正在尝试使用Polymer core ajax组件发布数据。在下面给定的组件上调用“go()”之后- <core-ajax id="createUserAjax" url="/rest" method="POST" body='{"firstName":{{firstName}}, "lastName":{{lastName}}, "email":{{email}}}'

我正在尝试使用Polymer core ajax组件发布数据。在下面给定的组件上调用“go()”之后-

<core-ajax
            id="createUserAjax"
            url="/rest"
            method="POST"
            body='{"firstName":{{firstName}}, "lastName":{{lastName}}, "email":{{email}}}'
            on-core-response="{{createUserResponse}}"></core-ajax>
请注意,JSON在末尾被破坏。上面的日志是从express log打印的-

rest.post('/', function(req, res){
console.log("Body-------> "+JSON.stringify(req.body));
      res.send(200);
});
我认为可能是express或body解析器搞砸了。但在Chrome开发者工具上,在“表单数据”标题下,它看起来是这样的-

{"firstName":foo, "lastName":bar, "email":fooatbar}:
请注意尾部:。由于这个损坏的json,在服务器端,我无法以点符号访问提交的json


这是虫子吗?或者我遗漏了什么?

将您的
body
属性更改为this以使其有效:

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

你忘了用引号把值括起来。

我也有同样的问题。我不知道为什么聚合物会造成这样的坏身体。 所以我找到了解决方案: 提取

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

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

var keys=对象键(请求主体)

var strobj=键[0]

var obj=JSON.parse(strobj)

希望能有所帮助。
通过

您可能应该使用contentType=“application/json”将内容视为json。否则,将使用application/x-www-form-urlencoded,这将使后面的“:”


希望这有帮助

尝试用params属性代替body属性发送数据。这应该允许您在服务器端正确获取数据。@jimidough10:我和您都不应该这样做。这将破坏HTTP GET/POST方法的全部用途。您的建议是,使用GET实现PUT功能,当然这是可行的,但这不是它的用途。它还违反了RESTURL模式。所以,你的建议对我来说是个很大的禁忌。事实上,这不是真的。据我所知,您的方法由method属性设置,与body/params属性无关。params是建议用于发送数据的属性。params=发送到指定URL的参数,如JSON。body=当method==“POST”时要发送的可选原始body内容。所有这一切都表明,正文内容不会随get请求一起发送。polymer的工作人员建议我使用params,而不是body with post。好的,我试过你提到的方法,它似乎奏效了。但这是非常令人困惑的,因为名称是“params”,根据一般的理解,它意味着参数,而不是实体。另一方面,由于我使用POST,所以我认为body是正确的位置(这也是在其他框架上发布json/其他数据的常见方式),另一个令人困惑的是,尽管我以“params”的形式发送数据,但它们在服务器端的body上是可用的。我以“req.body.firstName”的形式访问它们。但由于作为params发送,我希望它将是'req.params.firstName'。但是'req.params'是空的:PI已经更改了
body
标记,如下-
,但是我仍然得到与上面相同的输出-
body------->{“{”firstName\”:“foo\”,“lastName\”:“bar\”,“email\:\”foo@bar.com\“}”:“}
是的,这很好,但是你能解析你服务器上的JSON吗?不,我不能,因为服务器端的JSON格式不正确。整个JSON正文之所以成为“键”,是因为结尾:“这是我调用“req.body”-{“firstName”:“foo”,“lastName”:“bar”,“email”:”foo@bar.com“}=”“正如我所提到的,整个json就是因为这个结尾才成为关键”:这有时可能只是Chrome调试器显示它的方式,而不是服务器读取它的方式。你能告诉我请求的主体是什么吗,非结构化的。我的怀疑是,如果你尝试
JSON.parse(req.body)
它会解析,但我可能错了。@shri:为什么要将其作为注释发布?这不是问题的答案:“这是一个bug吗?还是我遗漏了什么?”。缺少的部分是内容类型。使用适当的内容类型可以解决问题。对于使用
的1.0版本,这是该问题的100%答案。谢谢你,德拉尔!今天浪费了4个小时试图解决这个问题。
Body-------> {"{\"firstName\":foo, \"lastName\":bar, \"email\":fooatbar}":""}