【问题标题】:Reload JSON file using jQuery on page refresh在页面刷新时使用 jQuery 重新加载 JSON 文件
【发布时间】:2016-03-01 09:10:08
【问题描述】:

我在这里尝试做的是:

$.getJSON(sampleJson.json), function(data) {}

从网页上显示的sampleJson.json 读取数据。通过 AJAX 调用提交的网页上显示的数据如下所示:

$.ajax({type: "GET", url: "...", data: "abc" ,
    Success: function(data) {}

数据被带到我使用 servlet 获取数据的服务器端。 这就是问题所在,我将数据写入相同的sampleJson.json,因此更新了 json 文件。现在我希望更改的数据在页面刷新时反映在网页上,因为我使用相同的sampleJson.json 在页面加载时显示数据,但网页没有显示更改的数据。

我希望问题很清楚,有没有办法解决这个问题?

【问题讨论】:

    标签: javascript java jquery


    【解决方案1】:

    这是因为缓存的内容是从第二个请求中提供的。添加带有 json url 的时间戳参数,这将使每次请求时 http 请求都是新的 .. 如下所示

     var curTimeStamp = Math.floor(Date.now() / 1000);
     $.ajax({type: "GET", url: "/json/sampleJson.json?t="+curTimeStamp, data: "abc" ,
    Success: function(data) {}
    

    【讨论】:

    • 我正在从 webapp 文件夹中读取 json 文件,如何在此处添加时间戳参数,我也尝试将 json url 提供为 'localhost/json/sampleJson.json?t=<timestamp> 但问题仍未解决。还尝试添加 '$ .ajaxsetup({cache:false});'这会在 sampleJson.json 的行尾附加时间戳
    • $.ajaxsetup({cache:false}) 也是另一种方式。通过添加时间戳,它将获取该 URL 中更新的 json 内容
    • 谢谢坦加。它适用于我通过 http 使 json 可用。如果我在文件系统中使用一个 json 文件,它会工作吗?
    • 否 如果来自文件系统,则仅在服务器内部可见。客户端只有在 web (http) 上才能访问 json。
    【解决方案2】:

    如果您可以修改服务于 json 文件的服务器端,那么您可以添加 'no-cache' 标头。

    在 nodejs-expressjs 中这样做

    ..
    res.setHeader('Cache-Control', 'no-cache');
    res.json(yourdata);
    ..
    

    但具体如何取决于您的服务器端技术以及更改它的可能性。 (java?)

    【讨论】:

      猜你喜欢
      • 2010-12-24
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 2012-11-14
      相关资源
      最近更新 更多