无法使用 Polymer 的核心 -ajax 执行 POST 请求

Can't do POST requests with Polymer's core-ajax

这是我的:

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>

我有一个服务器设置为 return 当用户发布到 /test 时 POST 消息的正文。

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

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

对象{对象对象:“”}

这看起来像 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

核心 ajax 您想要通过 post 获取的所有数据都必须使用 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);
}

令人困惑的是,在节点中,您认为参数是获取数据,正文是 post 数据,但这与核心 ajax 无关。所有数据获取或 post 都使用 params 属性发送。