通过javascript(jQuery)我试图将Google协作平台中某些网页的内容加载到不同网站的网页中的元素上。使用jQuery的加载我得到了可以预期的结果:
XMLHttpRequest cannot load https://sites.google.com/site/foo/home. No 'Access-Control-
Allow-Origin' header is present on the requested resource. Origin 'http://bar' is
therefore not allowed access.
我尝试使用CORS,使用下面的代码(我在http://www.html5rocks.com/en/tutorials/cors/找到),但得到了相同的结果。
function createCORSRequest(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// XHR for Chrome/Firefox/Opera/Safari.
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
// XDomainRequest for IE.
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
// CORS not supported.
xhr = null;
}
return xhr;
}
function makeCorsRequest() {
var url = 'https://sites.google.com/site/edumonkihelp/test0';
var xhr = createCORSRequest('GET', url);
if (!xhr) {
alert('CORS not supported');
return;
}
xhr.onload = function() {return xhr.responseText;};
xhr.onerror = function() {alert('Woops, there was an error making the request.');};
xhr.send();
}
所以我想我有两个问题: 1.您可以访问Google协作平台中的网页内容吗? 2.是否还有其他类似的服务可以帮助您这样做?
谢谢!
答案 0 :(得分:1)
根据Google Sites Data API,您可以使用path
参数获取位于http://sites.google.com/site/siteName/path/to/the/page
的特定网页:
GET /feeds/content/domainName/siteName?path=/path/to/the/page
要使用jQuery.ajax()执行Ccoss域请求,请指定dataType: 'jsonp'
该示例演示了如何检索位于https://sites.google.com/site/nokiaofficescontacts/hq
的页面:
$.ajax({
url: 'https://sites.google.com/feeds/content/site/nokiaofficescontacts?path=/hq&alt=json',
success: function (data) {
console.log('Page was succesfully retrieved');
console.log(data.feed.entry[0].title); //print Page Title
},
error: function (error) {
console.log(JSON.stringify(error));
},
dataType: 'jsonp'
});
注意:
alt=json
被指定为以JSON格式请求响应。