【问题标题】:Old data using YQL and Javascript getJSON call使用 YQL 和 Javascript getJSON 调用的旧数据
【发布时间】:2017-11-23 15:35:39
【问题描述】:

在进行了一些搜索之后,似乎这类问题影响了许多用户,因此对这个问题的回答可以帮助雅虎 YQL 平台的许多用户。

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

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

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

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

我认为问题出在以下两个方面之一:

1) 也许雅虎缓存了查询,只从动态增长的表/文件中获取更新信息

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

作为补充说明,完全相同的查询结构与 Google 表单(可以导出为 CVS)完美配合,并且在我使用的动态增长的 CVS 文档上也能顺利工作现在是老式数据库,需要快速切换到简单的半静态文档。

有什么想法或修复可以用于我的半静态 CVS 文档?

【问题讨论】:

    标签: javascript json yql


    【解决方案1】:

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

    尝试在 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...
    

    【讨论】:

    • 解决方案是正确的(缓存问题),但语法让我失望:是 - "url" + "?q="select..." + &format="json" 吗?如果我手动创建一个带有 Date.now() 时间戳的字符串 - "mywebsite.csv?_=1234" 它工作得很好。
    • params 最终将作为查询字符串添加到 url 中,就像您尝试手动创建它们一样,减少对引号和连接进行排序的麻烦
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多