我正在尝试使用google api在gmail中创建草稿。
授权后,我无法使用POST发送请求正文。这是我的代码的简化版本。
var token = hash[1].split('=')[1]; // getting token
var body = "some text";
var base64message = Base64.encode(body); //uses base64 library to encode message
var params ={
"message": {
"raw": base64message
}
}
var request = new XMLHttpRequest();
request.onload = function(){
console.log(this.responseText); // parseError
}
request.open('POST','https://www.googleapis.com/gmail/v1/users/me/drafts?access_token='+token,true);
request.send(JSON.stringify(params));
解决了忘了这个:
request.setRequestHeader('Content-Type','application / json');
答案 0 :(得分:1)
而不是:
request.onload = function(){
console.log(this.responseText); // parseError
}
在onreadystatechange
之后使用if(this.readyState == 4 && this.status == 200){
。
this.readyState == 4
表示请求已完成或已处理this.status == 200
表示它也成功了。 .onload
,而onreadystatechange
自原始规范以来就已存在。 .onload
仅等于this.readyState == 4
。
所以你的代码看起来像这样:
var token = hash[1].split('=')[1]; // getting token
var body = "some text";
var base64message = Base64.encode(body); //uses base64 library to encode message
var params ={
"message": {
"raw": base64message
}
};
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
}
};
request.open('POST','https://www.googleapis.com/gmail/v1/users/me/drafts?access_token='+token,true);
request.send(JSON.stringify(params));