从铁格式

时间:2017-03-01 18:16:16

标签: json ajax polymer

我使用iron-form将数据发送到Rails服务器。目前,表单发送的JSON类似于:

{
  "date": "January 1",
  "name": "John Doe",
  "company": "Whatever Inc."
}

但是为了在Rails端接收它,我需要将其格式化为:

{
  "userInfo": {
    "date": "January 1",
    "name": "John Doe",
    "company": "Whatever Inc."
  }
}

如何将表单数据嵌套在userInfo param中?我尝试使用iron-form-presubmit事件监听器,但无法使其正常工作。

以下是我的铁形式的代码:

<form is="iron-form" id="form" method="post" action="url/for/api">
  <input name="date" is="iron-input">
  <input name="name" is="iron-input">
  <input name="company" is="iron-input">

  <div id="buttons">
    <paper-button id="submit" raised onclick="_submit(event)">Save</paper-button>
    <paper-button id="reset" raised onclick="_reset(event)">Reset </paper-button>
  </div>
</form>

和javascript:

<script>

Polymer({
  is: 'my-view1',
});

function _submit(event) {
    var form = Polymer.dom(event).localTarget.parentElement.parentElement;
    form.submit();
}

function _reset(event) {
    var form = Polymer.dom(event).localTarget.parentElement.parentElement;
    form.reset();
}

</script>

1 个答案:

答案 0 :(得分:1)

根据我的理解,您可以在提交数据之前更新请求正文,并将当前数据转换为您喜欢的对象/结构:

<form is="iron-form" on-iron-form-presubmit="_presubmit" id="form" method="post" action="url/for/api">
  <input name="date" is="iron-input">
  <input name="name" is="iron-input">
  <input name="company" is="iron-input">

  <div id="buttons">
    <paper-button id="submit" raised onclick="_submit(event)">Save</paper-button>
    <paper-button id="reset" raised onclick="_reset(event)">Reset </paper-button>
  </div>
</form>

类似于完成here,但完全改变了身体

function _presubmit(e) {
  let body = this.$.form.request.body;
  body = {"userInfo" : body };
}

希望这会有所帮助。

相关问题