我似乎无法让XMLHttpRequst方法与日历一起正常工作:从Google Calendar API获取请求。
例如,带有“myemail@gmail.com”的calendarId可以正常工作,但如果它包含"en.usa#holiday@group.v.calendar.google.com"
之类的“#”字符,则会返回401错误,"#contacts@group.v.calendar.google.com"
会返回404错误。
我假设请求将散列符号注册为片段,其余作为片段标识符?有没有办法解决这个问题,同时仍然使用XMLHttpRequest?
var xhr = new XMLHttpRequest();
xhr.open('GET',
'https://www.googleapis.com/calendar/v3/calendars/' + calendarId +
'?access_token=' + accessToken);
xhr.onreadystatechange = function (e) {
if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
console.log(xhr.response);
}
};
xhr.setRequestHeader('responseType', "json");
xhr.setRequestHeader('timeMin', (new Date(today.getFullYear(),
today.getMonth(), today.getDate())).toISOString());
xhr.setRequestHeader('showDeleted', false);
xhr.setRequestHeader('singleEvents', true);
xhr.setRequestHeader('maxResults', 30);
xhr.setRequestHeader('orderBy', "startTime");
xhr.send(null);
在chrome检查工具的“网络”标签中,只有“#”之前的请求网址部分与没有#的其他calendarId相比才会被发送。
答案 0 :(得分:2)
我假设请求将散列符号注册为片段,其余的作为片段标识符?
是
在使用XMLHttpRequest的同时还有什么方法吗?
与任何其他工具使用的任何其他网址相同。
不要将数据推送到网址(或任何其他数据格式)而不妥善转义它。
'https://www.googleapis.com/calendar/v3/calendars/' +
encodeURIComponent(calendarId) +
'?access_token=' +
encodeURIComponent(accessToken)