使用 YQL 和 Javascript getJSON 调用的旧数据

Old data using YQL and Javascript getJSON call

经过一番搜索后,似乎此类问题影响了很多用户,因此对这个问题的回答可以帮助 Yahoo's YQL Platform 的许多用户。

我的主要目标是提取存储在网络服务器上的半静态 CVS 文档,然后在 Javascript 中进行解析。半静态意味着 CVS 文档不会附加其他条目,而是每个条目都会被修改。

使用 YQL 控制台 https://developer.yahoo.com/yql/console/ 为我提供每次调用存储在远程服务器上的半静态 CVS 文件时的更新数据。我可以修改数据,YQL 控制台将成功 return 更新数据。当我提取他们提供的剩余查询并简单地 'paste' 将其放入浏览器 window 时,提供的数据对应于 我所做的第一个查询 。当我将查询作为 $.getJSON 请求嵌入 Javascript 时:

$.getJSON("https://query.yahooapis.com/v1/public/yqlq=select%20*%20from%20csv%20where%20url%3D'mywebsite.csv'&format=json").done(函数(数据){

我仍然得到过时的数据。如果我切换到不同的网络浏览器或设备,信息仍然过时,这让我感觉这不是本地机器上的缓存问题。

我认为问题出在两个地方之一:

1) 也许 Yahoo 会缓存查询并且只从 tables/files 获取动态增长的更新信息

2) 我没有正确使用 YQL 查询。

作为附加说明,完全相同的查询结构 与 Google 表单(可以导出为 CVS)完美配合,并且在我在一个现在过时的数据库上使用的动态增长的 CVS 文档,需要快速切换到简单的半静态文档。

有什么想法或修复可以在我的半静态 CVS 文档上运行吗?

这听起来像是浏览器缓存问题

尝试在 url 中添加一个时间戳,这使得每个请求都有一个唯一的 url,因此浏览器不会为其缓存

var params ={
  q : "select%20*%20from%20csv%20where%20url%3D'mywebsite.csv'",
  format: "json",
  _v : Date.now()    
};

$.getJSON("https://query.yahooapis.com/v1/public/yql", params ).done...