我为我们的网站编写了一个用于密码重置的HTML页面,我们希望它是对服务器的POST调用。我们正在使用聚合物和代码:
<dom-module id="user-password-reset">
<template>
<div class="popup">
<h5 class="popup-heading">Forgot Password</h5>
<div class="popup-body">
<div class="form-group">
<label for="FormInput-UserEmail">Provide your Email Address</label>
<input type="email" class="form-control" id="FormInput-UserEmail" placeholder="name@example.com" value="{{ email::input }}">
</div>
<br/>
<div class="text-center">
<button type="button" class="btn" on-click="onSubmit">Reset Password</button>
</div>
</div>
</div>
<core-ajax
id="AjaxPost"
auto="false"
url="/api/user/email"
method="POST"
content-type="application/json"
handle-as="json"
on-core-response= _handleAjaxPostResponse
on-core-error= _handleAjaxPostError
></core-ajax>
</template>
<script>
Polymer({
is: 'user-password-reset',
behaviors: [
Polymer.IronOverlayBehavior
],
properties: {
email: { type: String },
},
onSubmit: function( event ) {
this.$.AjaxPost.params = JSON.stringify( { email: this.email } );
console.log( this.$.AjaxPost );
this.$.AjaxPost.go();
},
_handleAjaxPostResponse: function( event ) {
/* Do Something */
},
_handleAjaxPostError: function( event ) {
/* Do Something */
},
});
</script>
</dom-module>
在控制台中:
<core-ajax id="AjaxPost" auto="false" url="http://localhost:8080/api/user/email" method="POST" content-type="application/json" handle-as="json" class="style-scope user-password-reset"></core-ajax>
并且有一个错误说:
Uncaught TypeError: this.$.AjaxPost.go is not a function
我现在该怎么办?
答案 0 :(得分:0)
对不起,我忘了提到聚合物的版本。我们使用Polymer 1.0,感谢Ben Thomas指出这一点。解决方案结果很简单,无需将其转换为Json并使用iron-ajax代替core-ajax。
代码:
<iron-ajax
id="AjaxPost"
url="/api/user/email"
method="POST"
content-type="application/json"
handle-as="json"
on-response="_handleAjaxPostResponse"
on-error="_handleAjaxPostError"
></iron-ajax>
var ajaxPost = this.$.AjaxPost;
ajaxPost.params = { email: this.email };
ajaxPost.generateRequest();
请注意,如果您正在使用Post调用,那么最好以params方式发送数据,而不是在body中发送数据(在某处读取)。在发送时,请不要将Json字符串化。
答案 1 :(得分:-2)
我有时候已经遇到过这个问题了。
尝试使用noConflict()
,因为jquery可能与你正在运行的内容有冲突。