Jquery将JSON发布到本地文件

时间:2014-03-20 14:49:33

标签: javascript android jquery json cordova

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

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

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

我的功能:

$.getJSON

我的帖子功能:

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

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

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

1 个答案:

答案 0 :(得分:2)

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

好的,所以不可能像某些评论所提到的那样发布到本地文件,但是按照建议使用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数据,如果该数据很可能被该应用程序的输入以外的其他内容更改,因为这只是我正在进行原型设计的应用程序的概念证明