polymer iron-ajax:如何将数据从输入元素绑定到iron-ajax的body属性

时间:2015-05-18 04:41:37

标签: javascript html ajax polymer

我最近在将数据从input元素绑定到iron-ajax的“body”属性时遇到了问题。 当我在聚合物0.5上使用core-ajax时,我可以很容易地绑定这样的值:

<core-ajax
           id="ajax"
           method="POST" 
           contentType="application/json"
           url="{{url}}"   
           body='{"username":"{{username}}", "password":"{{password}}"}'
           handleAs="json"
           on-core-response="{{responseHandler}}">
</core-ajax>

现在我尝试用铁-ajax做同样的事情。但它会逐字地发送“{{username}}”和“{{password}}”而不是其值。这是代码:

<iron-ajax
           id="ajax"
           method="POST" 
           contentType="application/json"
           url="{{url}}"   
           body='{"username":"{{username}}", "password":"{{password}}"}'
           handle-as="json"
           on-response="responseHandler">
</iron-ajax>

如何让它发挥作用?谢谢你的答案:)

2 个答案:

答案 0 :(得分:5)

您可以为ajax主体声明计算属性。像这样

properties: {
    ...
    ajaxBody: {
        type: String,
        computed: 'processBody(username, password)'
    }
},
processBody: function(username, password) {
    return JSON.stringify({username: username, password:password});
}

然后将其添加到iron-ajax

<iron-ajax ... body="{{ajaxBody}}"></iron-ajax>

答案 1 :(得分:0)

另一种选择是使用Computed Bindings

您的代码看起来像这样:

<iron-ajax
       ...
       body="{{getAjaxBody(username, password}}}"
       >
</iron-ajax>
<script>
Polymer({
  .....
  getAjaxBody: function(username, password) {
    return JSON.stringify({username: username, password: password});
  }
})
</script>