<dom-module id="my-new-app">
<style>
</style>
<template>
<iron-ajax
id="ajax"
handle-as="json"
content-type="application/json"
method="POST"
body={"user":2,"dob":"2015-06-10","jobs":1,"skills":[],"about":"cool"}
on-response="hresponse"
debounce-duration="3000">
</iron-ajax>
<button on-click="setajax">Click me</button>
</template>
<script>
Polymer({
is: "my-new-app",
setajax: function () {
this.$.ajax.url="http://127.0.0.1:8000/users/";
this.$.ajax.generateRequest();
},
hresponse: function(request) {
console.log(request.detail.response);
console.log(this.$.ajax.lastResponse);
console.log(this.$.ajax.params);
}
});
</script>
</dom-module>
这不会将数据正确发布到服务器。同样,当我放入控制台时.log在 iron-ajax.html 文件中,我发现 contentType 仍然设置为 application/x-www-form-urlencoded
.文档说我们可以通过指定contentType = {String}
来指定 contentype。
你的方法实际上对我有用。
但是,body 属性必须括在引号中(所有属性都应如此)。
您可以尝试在以下情况下使用单引号:
<iron-ajax
id="ajax"
handle-as="json"
content-type="application/json"
method="POST"
body='{"user":2,"dob":"2015-06-10","jobs":1,"skills":[],"about":"cool"}'
on-response="hresponse"
debounce-duration="3000">
在 0.5 中,我知道 core-ajax 总是存在无法正确发送正文对象的问题。我一直在使用的解决方法是将身体串起来。
setajax: function(){
ajax.body = JSON.stringify({
"user": 2,
"dob": "2015-06-10",
"jobs": 1,
"skills": [],
"about": "cool"
})
ajax.generateRequest()
}
iron-ajax 主体使用原始数据,因此如果需要,您可以使用在 iron-ajax 内部用于参数的相同函数来生成 POST 查询字符串参数,如下所示:
var Util = {
getQueryString: function (params) {
var queryParts = [];
var param;
var value;
for (param in params) {
value = params[param];
param = window.encodeURIComponent(param);
if (value !== null) {
param += '=' + window.encodeURIComponent(value);
}
queryParts.push(param);
}
return queryParts.join('&');
}
};
然后你可以像这样使用它:
this.$.ajax.body = Util.getQueryString({
"user": 2,
"dob": "2015-06-10",
"jobs": 1,
"skills": [],
"about": "cool"
});
还可以使用计算属性并生成此查询字符串
设置 body 属性的方式不正确。
body={"user":2,"dob":"2015-06-10","jobs":1,"skills":[],"about":"cool"}
这不是有效的 Polymer 数据绑定表达式。
元素中应有一个属性,并使用正确的绑定表达式,例如:
body="{{myBodyProperty}}"
...
properties:{
myBodyProperty:{
type:Object,
value:{foo:"bar"}
}
}
如果设置了正确的内容类型,则正文将作为 json 正确发送。