Jquery将JSON发布到本地文件

我正在使用jQuery Mobile开发一个Phonegap应用程序来下载有关服务器状态的JSON文件,并且出于测试目的,我使用保存在本地文件夹结构中的JSON文件。

我能够使用jQuery $.getJSON函数轻松读取文件并显示数据,但我不确定如何使用$.post jQuery函数将数据保存回文件中。

$.getJSON("js/servers.json")用于完美地获取JSON数据(js / servers.json存储在本地文件结构中)但是当我尝试$.post("js/servers.json", jsonServerObj)其中jsonServerObj是我使用$.getJSON获得的JSON,数据似乎没有在页面重新加载时正确保存到文件。

我的function:

 $.getJSON("js/servers.json").success(function (data) { jsonServerObj = data; // Do stuff with data }); 

我的postfunction:

 JSON.stringify(jsonServerObj); $.post("js/servers.json", jsonServerObj).success(function () { alert("Data sent!"); }) .error(function () { alert("UH OH ERROR!"); }); 

jsonServerObj被设置为JS文件的全局变量,post函数每次都返回成功警报,但是当重新加载页面时,JSON不应该保存。

作为参考,我在运行Android 4.3的Android HTC One上进行测试

根据评论,这是我对自己问题的解决方案:

好的,所以不可能像某些评论所提到的那样发布到本地文件,但是按照建议使用localStorage和JSON.stringify以及JSON.parse ,数据仍然可以存储在本地,如下所示:

 function getServerData() { $.getJSON("js/servers.json").success(function (data) { // Add JSON to localStorage under serverData localStorage.setItem("serverData", JSON.stringify(data)); // Do stuff } } 

检索时,我发现你必须首先检索数据,然后将其解析回JSON对象,如下所示:

 function retrieveData() { var temp = localStrage.getItem("serverData"); var jsonData = JSON.parse(temp); // Do stuff with JSON data } 

此外,我了解到,只要应用程序安装在设备上,即使用户手动关闭或停止,Phonegap应用程序的localStorage数据也是持久的。

我还通过这个if / else语句检查数据是否已经存在:

 if (typeof (Storage) != "undefined") { if (!localStorage.getItem("serverData")) { alert("setting server data"); // Ajax JSON to get server information getServerData(); } else { retrieveData(); } } else { alert("localStorage unavailable!"); } 

除非应用程序在安装后第一次打开,否则此语句通常会对两个ifs都返回true。 我不建议将localStorage用于来自非本地Web服务的任何JSON数据,如果该数据很可能被该应用程序的输入以外的其他内容更改,因为这只是我正在进行原型设计的应用程序的概念certificate。