来自Google Docs API的数据Feed

时间:2011-09-09 19:08:50

标签: javascript xml ajax google-docs-api

我正在尝试使用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对象,以便在网页上使用。

如何解决此错误?

2 个答案:

答案 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的更多信息。