刷新页面时使用jQuery重新加载JSON文件

4
我将尝试做的事情是:

我想在这里实现以下目标:

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

sampleJson.json 读取数据并在网页上显示。通过以下 AJAX 调用提交的网页会更改显示的数据:

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

数据被传输到服务器端,我使用servlet来获取数据。这里出现了问题,我将数据写入同一个sampleJson.json文件中,因此json文件被更新。现在我希望页面刷新后反映出更改的数据,因为我在页面加载时使用同一个sampleJson.json来显示数据,但是网页没有显示更改后的数据。

我希望问题清楚明了,有没有解决这个问题的方法?

2个回答

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) {}

我正在从Web应用程序文件夹中读取JSON文件,如何在此处添加时间戳参数?我尝试将JSON URL设置为'http://localhost/json/sampleJson.json?t=<timestamp>',但问题仍未解决。还尝试添加'$ .ajaxsetup({cache:false});',这会在sampleJson.json内的行末附加时间戳。 - sathishkraj
$.ajaxSetup({cache:false})也是一种替代方法。通过添加时间戳,它将获取该URL中更新的JSON内容。 - Thanga
谢谢Thanga。当我将json文件提供在http上时,它可以工作。如果我使用文件系统中的json文件,它会工作吗? - sathishkraj
如果数据来自文件系统,那么它只能在服务器内部可见。只有当数据在Web(http)上时,客户端才能访问JSON数据。 - Thanga

0
如果您可以修改提供JSON文件的服务器端代码,那么您可以在头部添加“no-cache”来解决缓存问题。
在Node.js - Express.js中进行操作。
..
res.setHeader('Cache-Control', 'no-cache');
res.json(yourdata);
..

但是如何实现取决于您的服务器技术以及是否可以更改它。(Java?)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接