如何从铁形式的Polymer 1请求中获得响应

时间:2015-07-06 16:27:13

标签: javascript polymer

我正在尝试从iron-form in Polymer 1获得回复。

表单提交调用一个php脚本,该脚本返回HTML代码以插入divul和一些li)。

我使用iron-form事件“iron-form-response”,但我不知道如何获得回复。

我可以在浏览器开发者工具的网络标签中看到响应,但不知道如何在我的元素中获取它。

我在iron-form文档online中找不到该怎么做。

有人能帮助我吗?

5 个答案:

答案 0 :(得分:8)

发生了什么事,伙计们?只有这么简单时,所有这些反应都会混淆OP:

您的表单:

<form is="iron-form" on-iron-form-response="responseHandler" action="http://localhost" id="myform">
   <!-- Your form elements -->
</form>

您的脚本:

<script>
   Polymer({
       // Some scripts here.

       // ...now your listener
       responseHandler: function(e) {
          console.log(e.detail.response);
       },                          
   });
</script>

就是这样。没什么复杂的。不要过分复杂化。

答案 1 :(得分:3)

将事件监听器添加到铁形式。

ready: function(){
      this.$.myform.addEventListener('iron-form-response',this.formResponse);
      this.$.myform.addEventListener('iron-form-error',this.formError);
}

表单响应函数:

formResponse: function (e){
                    console.log("Server Response: ",e.detail);
}

表单错误函数:

formError: function (e){
                    console.log("Form Error: ",e.detail);
}

答案 2 :(得分:0)

我要建立Talon的答案,这是正确的。

假设从服务器发送的响应是JSON格式,

e.detail将是一个JSON对象。因此,如果您正在使用Node.JS和Express,则可能会收到以下代码:

document.getElementById('my-form').addEventListener('iron-form-response', function (e) {
    console.log('Form :', e.detail);
});

您的服务器代码可能如下所示:

res.status(200).json({'foo': 'bar'});

之后e.detail将成为对象{"foo": "bar"}

答案 3 :(得分:0)

小更新。 我发送了一些带有回复的json: res.contentType('json'); es.status(500).send({"foo":"bar"}); 如果我使用500(错误),我只能通过console.log(e.detail.request.xhr.response);到达json数据 如果是代码200,则可通过以下方式访问:console.log(e.detail.response); 我不明白为什么会这样,但这对我来说是唯一的方式((

答案 4 :(得分:0)

  <script>
    Polymer({
      is: 'rsvp-wedding',
      attached: function() {
        var form = document.querySelector('form');
        form.addEventListener('iron-form-error', function(e) {
          console.log(e.detail.request.status);
        });
      }
    });
  </script>