Javascript 在AngularJS中处理缓存和更新的JSON文件
我正在构建一个应用程序,在其中我可以从JSON文件中添加和删除项目。 我遇到了以下问题:当我删除一个项目时,它会反映在前端。该项目会消失,但应用程序需要重新加载几个硬页面才能读取由我的PHP文件而不是缓存的文件生成的新JSON文件 如果我只重新加载一次,它将只读取缓存中的JSON文件,这并不反映所做的更改 有没有办法直接用AngularJS来处理这个问题 这是我的角度代码: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
$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})
这将使每个请求成为唯一的请求,并应防止服务器端缓存
一个警告是,由于您忽略了缓存,您将失去缓存的所有性能优势