聚合物铁-ajax 本体收到快递异物

polymer iron-ajax body received in express extra object

我正在尝试将 JSON 对象从我的聚合物应用程序发送到我的快递 API。

我在客户端做了以下操作:

<iron-ajax
    id="createRoomAjax"
    url="{{url}}{{roomRoute}}"
    handle-as="json"
    method="POST"
    on-response="onRoomCreated"
    debounce-duration="300">
</iron-ajax>

createRoom: function() {
  this.$.createRoomAjax.body = {
    'name': roomname.value
  };
  this.$.createRoomAjax.generateRequest();
  // console.log(this.$.createRoomAjax);
},

在快递方面,我打印以下内容:

function(req, res, next) {
   console.log(req.body);
}

这给了我以下输出:

{ '{"name":"jljk"}': '' }

我希望在我的 express 应用程序中,我会收到一个带有正文的请求:{name: '...'} 而不是围绕它的额外对象。有人可以向我解释为什么会这样吗?

您可以尝试使用 params 而不是 body,如下所示:

  this.$.createRoomAjax.params = {
    'name': roomname.value
}

这对我使用 Polymer 和 Express 很有效。

我刚刚找到了问题的解决方案。看来我需要将 iron-ajax 请求的 contentType 设置为 json 否则它会以不同方式发送 body-payload。

新 HTML:

  <iron-ajax
        id="createRoomAjax"
        url="{{url}}{{roomRoute}}"
        method="POST"
        content-type="application/json"
        on-response="onRoomCreated"
        debounce-duration="300">
    </iron-ajax>