Arrays 无法在.json文件中发布数据

Arrays 无法在.json文件中发布数据,arrays,angularjs,json,ionic-framework,Arrays,Angularjs,Json,Ionic Framework,我正在尝试使用ionic框架创建一个混合应用程序,但有一点我被卡住了。我所要做的就是将三个不同输入框中的值保存到“data.json”文件中,并检索该数据或在需要时进行更改,无论应用程序是否正在运行,值都应该保留在那里 $http.get('js/data.json').success(function (data) { $scope.values = data; }); html 但是,只要单击按钮,上述功能就会触发。它应该从这三个框中获取值,并将其放入data.json文件中,但什

我正在尝试使用ionic框架创建一个混合应用程序,但有一点我被卡住了。我所要做的就是将三个不同输入框中的值保存到“data.json”文件中,并检索该数据或在需要时进行更改,无论应用程序是否正在运行,值都应该保留在那里

$http.get('js/data.json').success(function (data) {
    $scope.values = data;
});
html

但是,只要单击按钮,上述功能就会触发。它应该从这三个框中获取值,并将其放入data.json文件中,但什么也没有发生。我看不到{{yoyo.name}}中的任何更改,因为这应该会显示数组中的所有对象。但是,我可以在
console.log


请告知我为什么不能将数据保存在.json文件中,或者正确的方法是什么?

要执行
$http.post
您需要一个后端API(PHP、Node Js等),它可以捕获您想要的数据并通过文件系统中的读写方法保存到db或json中

不能将数据直接写入.j子文件。但是您可以从.json文件接收数据。对于这种情况,您可以选择浏览器本地存储、web SQL、SQL lite等选项


记住,本地的static.json文件只能用于读取json值。

您不能使用普通JavaScript在服务器中保存文件。想一想,如果恶意用户只使用JavaScript控制台就可以将数据发布到我们的服务器上,会出现哪些问题?这就是为什么它是不被允许的

因此,我们使用AJAX,这是一种与另一个服务器端API端点通信的工具,该端点实际上为我们完成了这项工作。在这里,您可以使用
localStorage
保存
SendData
。更好的方法是使用这样的服务或工厂

app.factory("LocalStorageService", ["$window", function ($window) {
    var HasKey = function (key) {
        return $window.localStorage && $window.localStorage.getItem(key);
    };
    var GetItem = function (key) {
        if ($window.localStorage) {
            return $window.localStorage.getItem(key);
        }
        return null;
    };
    var SetItem = function (key, value) {
        if ($window.localStorage) {
            $window.localStorage.setItem(key, value);
            return true;
        }
        return false;
    };
    var RemoveItem = function (key) {
        if ($window.localStorage) {
            return $window.localStorage.removeItem(key);
        }
        return null;
    };
    return {
        HasKey: HasKey,
        GetItem: GetItem,
        SetItem: SetItem,
        RemoveItem: RemoveItem
    };
}]);
现在要插入到
localStorage
,请将工厂注入到应用程序中,并像这样调用它

//To store into localStorage
LocalStorageService.SetItem("personalDetails", JSON.stringify(SendData));

//To retrieve from localStorage
var DTO = LocalStorageService.GetItem("personalDetails");
var personalDetails = JSON.parse(DTO);

请尽快开始使用更好的命名约定。否则,它将成为一个不那么容易改掉的坏习惯

您的文件可能是只读的吗?@PmanAce通过转到data.json文件的属性,我可以看到只读单选按钮未选中,因此我猜它不是只读的?为什么我不能简单地将文件存储在本地存储器中?我不想在服务器中存储数据。做这件事的正确方法是什么?另外,如果它能从json文件中获取http.get数据,它也应该能够编写它?我将尝试使用localstorage,因为这正是我所需要的。我尝试将数据存储在一个函数中,但当页面重新加载时,这些数据就会消失。。。但我需要相反的答案。欢迎您的代码片段。我能够理解您从本地的data.json文件中获取数据,并且成功地尝试访问相同的data.json。这是不可能的。。如果您更新了代码段,请在此处共享。。如果您使用本地存储thn,则在所有dom刷新时已重新分配本地存储值。。。对不起,如果我的观点出了问题。谢谢,伙计,我看过上面的例子,我理解了它的概念。只是一个问题,我如何在“personalDetails”中添加新元素并不断更新它。我不想为多个值设置多个键。我将所有数据以jSon格式存储在一个键下。有什么想法吗?
app.factory("LocalStorageService", ["$window", function ($window) {
    var HasKey = function (key) {
        return $window.localStorage && $window.localStorage.getItem(key);
    };
    var GetItem = function (key) {
        if ($window.localStorage) {
            return $window.localStorage.getItem(key);
        }
        return null;
    };
    var SetItem = function (key, value) {
        if ($window.localStorage) {
            $window.localStorage.setItem(key, value);
            return true;
        }
        return false;
    };
    var RemoveItem = function (key) {
        if ($window.localStorage) {
            return $window.localStorage.removeItem(key);
        }
        return null;
    };
    return {
        HasKey: HasKey,
        GetItem: GetItem,
        SetItem: SetItem,
        RemoveItem: RemoveItem
    };
}]);
//To store into localStorage
LocalStorageService.SetItem("personalDetails", JSON.stringify(SendData));

//To retrieve from localStorage
var DTO = LocalStorageService.GetItem("personalDetails");
var personalDetails = JSON.parse(DTO);