2015-03-31 82 views
1

我有一个网站,我有13个链接。当你点击一个链接时,你会得到一个不同的json文件,它显示不同的数据。缓存JSON文件

一个问题是,当更新json文件时,更新不会在线反映,直到您清除缓存或查看json文件并刷新它。

另一个问题是,您点击的第一个链接出现的json数据会出现在您点击的其他链接上。

任何想法如何解决这些问题?

的jQuery:

$('.school').on("click", function() { 
    var school = $(this).attr('school'); 
    $.getJSON(school + "/data.json", function(data) { 
      $('.images').empty(); 
         $('.videos').empty(); 
          $('.field').empty(); 

         var location, enrollment, tuition, history, alumni, fact, prose; 
         location = data.location; 
         enrollment = data.enrollment; 
         tuition = data.tuition; 
         history = data.history; 
         fact = data.fact; 
         alumni = data.alumni; 
         prose = data.prose; 


         $('.location').html('<strong>Location</strong>: ' + location); 
         $('.enrollment').html('<strong>Enrollment</strong>: ' + enrollment); 
          $('.tuition').html('<strong>Undergraduate tuition</strong>: ' + tuition); 
          $('.history').html('<strong>History</strong>: ' + history); 
          $('.fact').html('<strong>Notable fact:</strong> ' + fact); 
         $('.alumni').html('<strong>Prominent alumni</strong>: ' + alumni); 
         $('.prose').html(prose);   
}); 
}); 
+1

没有看到标记,我不能与你的问题的第二部分帮助,但对于第一部分简单地添加新的'日期()的getTime()'的文件名,使用一个完全成熟的AJAX调用等等您可以将'cache:false'作为参数传递,或者使用'$ .ajaxSetup'来全局设置ajax调用不缓存。 – Archer 2015-03-31 17:05:07

回答

1

假如你不能改变服务器上的缓存选项,您可以通过使用的事实,连接到URL查询字符串缓存解决这个问题。我将_设置为Date.now(),以便您的链接仅在1ms内保持有效。

var school = $(this).attr('school'), 
    url = school + "/data.json?_=" + Date.now(); 
$.getJSON(url, function(data) { /* ... */ }); 
+0

我认为这是清除缓存是正确的。但我仍然有同样的问题,所以我不知道我做错了什么。 – LauraNMS 2015-03-31 17:52:46

+0

我打算将其标记为答案,因为它解决了所有缓存问题。我会继续为我遇到的问题寻找答案。 – LauraNMS 2015-03-31 18:34:21