我正在尝试从iron-form in Polymer 1
获得回复。
表单提交调用一个php脚本,该脚本返回HTML代码以插入div
(ul
和一些li
)。
我使用iron-form
事件“iron-form-response
”,但我不知道如何获得回复。
我可以在浏览器开发者工具的网络标签中看到响应,但不知道如何在我的元素中获取它。
我在iron-form
文档online中找不到该怎么做。
有人能帮助我吗?
答案 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>