无法使用Polymer的core-ajax进行POST请求

时间:2015-04-10 12:33:35

标签: javascript ajax polymer web-component core-elements

这就是我所拥有的:

Polymer('my-element', {
  created: function() {
    this.data = {
      name: 'John Doe',
      email: 'john@doe.com'
    };  
  },
  
  handleResponse: function(e, d) {
    console.log(d.response);
  }
});
<core-ajax
           id="ajax"
           auto
           url="/test"
           method="POST"
           handleAs="json"
           body="{{data}}"
           on-core-response="{{handleResponse"}}>
</core-ajax>

当用户发布到/ test时,我设置了一个服务器来返回POST消息的正文。

app.post('/test', function(req, res) {
    res.json(req.body);
}

然而,这是我在控制台上得到的响应:

对象{object Object:“”}

2 个答案:

答案 0 :(得分:0)

这看起来像core-ajax在this.data准备好之前执行AJAX调用。

尝试'manuel'AJAX请求启动,即ajax.go() 在里面这样做:

 created: function() {
    this.data = {
       name: 'John Doe',
       email: 'john@doe.com'
     }; 
    var respuesta = this.$.ajax;
    console.log(respuesta);
    respuesta.go();
},

示例Plunk

答案 1 :(得分:0)

核心ajax您希望通过帖子获取的所有数据必须使用params属性而不是body属性发送。

这将使您的核心ajax标记看起来像

<core-ajax
       id="ajax"
       auto
       url="/test"
       method="POST"
       handleAs="json"
       params="{{data}}"
       on-core-response="{{handleResponse"}}>
</core-ajax>

这将允许您捕获节点

中的正常数据
app.post('/test', function(req, res) {
  res.json(req.body);
}

令人困惑的是节点中你认为params是将数据和主体作为后期数据,但这与核心ajax无关。使用params属性发送所有数据get或post。