我想知道这里是否有人在发布表格时遇到类似的问题。我的代码非常简单,如前所述,每次单击按钮时,表单都会发布两次。我正在使用Polymer 05.5
<polymer-element name="book-form">
<template>
<label for="title">Title:</label>
<input id="title" value="{{title}}" />
<label for="author">Author:</label>
<input id="author" value="{{author}}" />
<label for="image">Image:</label>
<input id="image" value="{{image}}" />
<button on-click="{{fireAjax}}">Submit Form</button>
<core-ajax id="ajax"
auto
url="http://localhost:45922/api/book"
handleAs="json"
method="POST"
>
</core-ajax>
</template>
<script>
Polymer({
fireAjax: function () {
var data = { image: this.image, author: this.author, title: this.title };
this.$.ajax.contentType = 'application/json';
this.$.ajax.body = JSON.stringify(data);
this.$.ajax.go();
}
});
</script>
</polymer-element>
答案 0 :(得分:2)
您的fireAjax函数会更改core-ajax的数据。因为auto已启用,所以会触发ajax调用。然后你拨打this.$.ajax.go()
,这样就可以再次拨打电话。
尝试删除core-ajax元素中的auto
。
答案 1 :(得分:0)
好的,我发现问题是什么,只要url或参数发生变化,表单上的auto属性就会发布。如果想要控制何时发生POST,他们应该从core-ajax中删除auto属性。
<polymer-element name="book-form">
<template>
<label for="title">Title:</label>
<input id="title" value="{{title}}" />
<label for="author">Author:</label>
<input id="author" value="{{author}}" />
<label for="image">Image:</label>
<input id="image" value="{{image}}" />
<button on-click="{{test}}">Submit Form</button>
<core-ajax id="ajax"
url="http://localhost:45922/api/book"
handleAs="json"
method="POST"
>
</core-ajax>
</template>
<script>
Polymer('book-form', {
test: function () {
var data = { image: this.image, author: this.author, title: this.title };
this.$.ajax.contentType = 'application/json';
this.$.ajax.body = JSON.stringify(data);
this.$.ajax.go();
}
});
</script>
</polymer-element>