我正在尝试使用Google Docs API将电子表格数据作为XML,最终获得JSON数据。我已将URL(http://spreadsheets.google.com/feeds/list/0Aizy-VIdLC0QdDNNRkpfVncxQzZRNG9fMVhueXVMenc/1/private/values)放入浏览器,即使未登录Google,我也会获取数据。
当我尝试使用jQuery Ajax时,我收到“找不到页面”错误。
$.get('http://spreadsheets.google.com/feeds/list/0Aizy-VIdLC0QdDNNRkpfVncxQzZRNG9fMVhueXVMenc/1/private/values', function(data) {
console.log(data)
});
我猜相同的源策略可能是Ajax错误的原因,所以我尝试使用PHP,但是我得到了错误。
echo file_get_contents("http://spreadsheets.google.com/feeds/list/0Aizy-VIdLC0QdDNNRkpfVncxQzZRNG9fMVhueXVMenc/1/private/values");
我的目标是将Google文档电子表格数据转换为JSON对象,以便在网页上使用。
如何解决此错误?
答案 0 :(得分:5)
您必须登录才能检索电子表格数据。
登录时访问http://spreadsheet.google.com/.../private/values会生成有意义的XML页面。但是,在未登录时尝试加载同一页面会导致“找不到页面”。
根据JQuery响应的响应头,导致此错误的唯一原因是没有登录(如下所示)。
WWW-Authenticate: No credentials were included in your request.
有关相关文档,请参阅The Protocol Guide。
答案 1 :(得分:0)
假设您仔细检查了您的网址字符串,原因可能是same origin policy。由于浏览器的严格安全策略,您无法从其他域获取数据。
如果您想通过此操作,则需要使用其他方法,例如JSONP。
您可以在Ajax documentation page上阅读有关如何在jQuery中实现JSONP的更多信息。