Javascript:当用户再次访问同一页面时,不会重新发送Json文件?

时间:2016-08-05 16:56:30

标签: javascript jquery html json

我有一个看起来像谷歌的搜索功能,它的工作方式就像有人进入搜索页面,服务器然后发送一个包含对象名称和id的json文件,所以当用户在搜索框中键入内容时,框会弹出相似的名称,当用户点击一个结果时,关联的id是使用post方法将用户引导到关联页面的引用。

问题是,用户在北方页面上插入新对象后,虽然服务器已更新数据库和jsonfile,但当用户返回搜索页面时,json文件将不会再次发送,因此用户赢了“ t在搜索结果中看到新插入的对象名称。所以我想知道如何解决这个问题。

以下代码是搜索页面中发送json文件的代码。

<script>
    var obj;
        $.getJSON( 'obdatabase.json', function(obj) {  
            obj=obj;
        });
     // some code for search.
</script>

3 个答案:

答案 0 :(得分:2)

你的意思是它被浏览器缓存了吗?一个简单的解决方案是包含一个唯一的查询字符串参数:

<script>
var obj;
    $.getJSON( 'obdatabase.json?d=' + (new Date().getTime()), function(obj) {  
        obj=obj;
    });
 // some code for search.
</script>

答案 1 :(得分:2)

您的代码可能会有所帮助 我猜测json的反应正在被缓存 你的出路是使用数据类型为“json”的jQuery.ajax函数并缓存为false。

$.ajax({
  url: "obdatabase.json",
  dataType :"json",
  cache:false
});

注意:在内部缓存:false是通过在网址上附加一个随机数字来实现的,就像@mcgraphix的解决方案一样

答案 2 :(得分:0)

将您的AJAX回调转移到complete函数,它更加一致

<script>
       var obj;
        $.getJSON('obdatabase.json').complete(function(data){
              console.log(data.responseText);
              console.log(JSON.parse(data.responseText)) // obj

        })
     // some code for search.
</script>