【问题标题】:Getting latest Json from Apache2 server with AngularJS使用 AngularJS 从 Apache2 服务器获取最新的 Json
【发布时间】:2015-05-22 15:36:08
【问题描述】:

我的 apache2 服务器上有一些 jsons,我在 controllers 中获取数据,通常没有问题。 有时当我更新 json 时,我的 App 似乎没有获得最新数据。我发现它是由浏览器的缓存引起的,当我清理它时,我的应用程序可以看到最新的数据并且我的工作完美。 我找到了a similar problem,但该解决方案似乎不适合我的情况。

我的控制器:

myApp.controller("myController", ["$scope", "$http",  
                  function($scope,$http){

    $http.get('http://localhost/myjson.json').success(function(data){

          $scope.data=data;
          console.log(data);
    )}
}]);

在我的 html 中,我通常会执行以下操作:

<div class="example-class">{{data.justATest}}</div>

我在问自己:

  • 有什么方法可以始终获取最新数据吗?(如果有,在 AngularJS 中的方法是什么?)
  • 我的问题是浏览器缓存造成的吗?(如果是,我该如何解决和避免?)

提前致谢。

【问题讨论】:

    标签: javascript json angularjs apache2 browser-cache


    【解决方案1】:

    我用@TechM9iac 解决了这个post 的答案。

    正如他所说:解决方案是将表示时间戳或会话 ID 的查询字符串添加到您的文件中。

    所以我可以通过在我的 $http.get() 调用中添加 ?r= 来获得新的 json,例如:

    myApp.controller("myController", ["$scope", "$http",  
                      function($scope,$http){
    
        $http.get('http://localhost/myjson.json
                   ?r=<%= session.getId()%').success(function(data){
    
                  $scope.data=data;
                  console.log(data);
        )}
     }]);
    

    所以,要回答我的问题,它肯定是浏览器的缓存故障,解决它的方法是向我的文件添加表示时间戳或会话 ID 的查询字符串,以便始终强制浏览器获取最新数据。

    【讨论】:

    • 这个语法对吗?在最后一个 % 之后是否缺少 &gt;
    • 这是一个很老的答案,但我设法找到了源代码,&lt;%= session.getId()% 似乎是正确的。
    猜你喜欢
    • 2021-01-11
    • 1970-01-01
    • 2015-01-30
    • 2023-04-09
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多