2

我有一个使用 .appcache 清单的应用程序。一切都按预期工作,资源被缓存:

CACHE MANIFEST

CACHE:
css/images/ajax-loader.gif
[...]

NETWORK:
http://docs.google.com/*

SETTINGS:
prefer-online

现在,当我像这样从http://docs.google.com请求 CSV 资源时:

$.get(url, function (data) {
  // do something with the data
}).fail(function () {
  alert("There was an error in loading current data from the server.");
});

即使我真的在线(在 Chrome 和 FF 上),请求也会失败。在我使用 Appcache 之前一切正常。

在拥有 Appcache 清单时请求外部资源的正确方法是什么?

4

2 回答 2

1

正如我在评论中提到的,问题不仅在于 jQuery,还在于 CORS。Google Docs 不支持它(“发布到网络”是指下载,而不是从不同的 URL 请求资源,即来源。显然 Google 不想添加Header set Access-Control-Allow-Origin "*".

所以我所做的是遵循这个有用的指南:https ://webapps.stackexchange.com/questions/11864/how-can-i-retrieve-records-from-a-google-spreadsheet-in-json-format和https ://developers.google.com/gdata/samples/spreadsheet_sample(URL 现在不是 CSV 而是 JSONP,它也更改为//spreadsheets.google.com/feeds/list/[...]/[...]/public/values?alt=json-in-scriptjQuerycallback=xxx在调用时自动添加:

$.ajax({
  url : url,
  type : 'GET',
  dataType : 'jsonp',
  success : function (data) {
    for(var i in data.feed.entry) {
      console.log(entry['gsx$' + 'actualColumnHeader'].$t);
    }
  },
  error : function () {
    alert('Failed');
  }
});

这无论如何都不好或不干净(Atom Feed 而不是 CSV 或 JSON 只是为了解析它?真的吗?),但它对我有用。

于 2013-08-11T16:19:22.393 回答
1

我刚刚让它与tabletop一起工作。没有更多的CORS问题..现在。

于 2014-12-11T13:07:38.397 回答