即使我发现一些文章与我的问题相似,但没有答案解决了我的问题:
我希望每个(匿名)用户都允许向Github发布问题。正如我已经使用Polymer和Webcomponents开发的那样,我想使用<iron-ajax>
这样做,所以我有<iron-ajax>
元素:
<iron-ajax
id="githubIssues"
url="https://api.github.com/repos/IchordeDionysos/social-contacts/issues"
method="POST"
params='{"access_token": "efd925cc3c8d593b720f0d6a88f3c36f593e063a"}'
body="[[params]]"
verbose
handle-as="json"
on-response="showSuccess">
</iron-ajax>
我定义了这样的params属性:
params: {
notify: true,
type: Object,
value: {
"title": "",
"body": "",
"assignee": "IchordeDionysos",
"labels": ["0 - Backlog"]
}
}
最后我有一个按钮,它调用了一个函数来发布问题,在这个函数中,如果检查了它们,我会检查几个<paper-checkboxes>
,如果我将更多标签推送到params:
submitIssue: function() {
if (this.$.bug.checked) {
this.push('params.labels', 'bug');
};
if (this.$.help.checked) {
this.push('params.labels', 'help');
};
if (this.$.question.checked) {
this.push('params.labels', 'question');
};
if (this.$.feature.checked) {
this.push('params.labels', 'feature');
};
if (this.$.enhancement.checked) {
this.push('params.labels', 'enhancement');
};
if (this.$.design.checked) {
this.push('params.labels', 'design');
};
console.log(this.params);
this.$.githubIssues.generateRequest();
}
但是当我尝试发布问题时,我得到400 (Bad Request)
我如何解决这个以及我必须向我的令牌授予哪些范围?
编辑:以下是我的请求标题和正文的外观:http://requestb.in/11y0i0x1?inspect
编辑:发送到正文的[object Object]如下所示:
{title: "dsggsdf",
body: "sdfgsdfsdf",
assignee: "IchordeDionysos",
labels: Array[3]}
和标签数组:
labels: Array[3]
0: "0 - Backlog"
1: "help"
2: "question"
将对象记录到Chrome控制台时
答案 0 :(得分:0)
只需将属性content-type="application/json"
添加到您的iron-ajax属性中即可!
如果没有content-type
- 属性,ajax会将body
- 属性中提供的数据作为字符串发送,而不是像发布到Github上的json对象一样发送!
答案 1 :(得分:0)
您必须添加属性contentType="application/json"
像这样:
<iron-ajax
id="githubIssues"
url="https://api.github.com/repos/IchordeDionysos/social-contacts/issues"
method="POST"
params='{"access_token": "efd925cc3c8d593b720f0d6a88f3c36f593e063a"}'
body="[[params]]"
verbose
handle-as="json"
on-response="showSuccess"
contentType="application/json">
</iron-ajax>
我希望这有效;)