Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AngularJS中处理缓存和更新的JSON文件_Javascript_Php_Angularjs_Json_Caching - Fatal编程技术网

Javascript 在AngularJS中处理缓存和更新的JSON文件

Javascript 在AngularJS中处理缓存和更新的JSON文件,javascript,php,angularjs,json,caching,Javascript,Php,Angularjs,Json,Caching,我正在构建一个应用程序,在其中我可以从JSON文件中添加和删除项目。 我遇到了以下问题:当我删除一个项目时,它会反映在前端。该项目会消失,但应用程序需要重新加载几个硬页面才能读取由我的PHP文件而不是缓存的文件生成的新JSON文件 如果我只重新加载一次,它将只读取缓存中的JSON文件,这并不反映所做的更改 有没有办法直接用AngularJS来处理这个问题 这是我的角度代码: $scope.remove = function(array, index){ if($scope.totsse

我正在构建一个应用程序,在其中我可以从JSON文件中添加和删除项目。 我遇到了以下问题:当我删除一个项目时,它会反映在前端。该项目会消失,但应用程序需要重新加载几个硬页面才能读取由我的PHP文件而不是缓存的文件生成的新JSON文件

如果我只重新加载一次,它将只读取缓存中的JSON文件,这并不反映所做的更改

有没有办法直接用AngularJS来处理这个问题

这是我的角度代码:

 $scope.remove = function(array, index){
    if($scope.totsselected){
      array.splice(index, 1);
      $http.post("deleteall.php", {
          data : array
      })
      .then(function(data, status, headers, config) {
        $http.get('data/all.json')
          .then(function (response) {
              $scope.productesgenerals = response.data;
              console.log($scope.productesgenerals);
          }).catch(function (error) {
        });
      }); 
    }
)};
和我的PHP代码:

<?php

$contentType = explode(';', $_SERVER['CONTENT_TYPE']); 

$rawBody = file_get_contents("php://input"); // Read body
$data = json_decode($rawBody); // Then decode it
$all = $data->data; 

$jsonData = json_encode($all);
file_put_contents('data/all.json', $jsonData); 
?>

听起来好像已经打开了$http缓存。尝试为此请求禁用它

$http.get('data/all.json', {cache: false})
$httpcaching

如果这不起作用,它仍然被缓存,那么听起来像是服务器端缓存。您可以通过发送一个唯一的查询字符串来解决这个问题

$http.get('data/all.json?_=' + Date.now(), {cache: false})
这将使每个请求成为唯一的请求,并应防止服务器端缓存

一个警告是,由于您忽略了缓存,您将失去缓存的所有性能优势