Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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 Jquery将JSON发布到本地文件_Javascript_Android_Jquery_Json_Cordova - Fatal编程技术网

Javascript Jquery将JSON发布到本地文件

Javascript Jquery将JSON发布到本地文件,javascript,android,jquery,json,cordova,Javascript,Android,Jquery,Json,Cordova,我正在开发一个Phonegap应用程序,使用jQuery Mobile下载一个关于服务器状态的JSON文件,出于测试目的,我正在使用一个保存到本地文件夹结构中的JSON文件 我能够使用jQuery$.getJSON函数轻松读取文件并显示其数据,但我不确定如何使用$.postjQuery函数将数据保存回文件中 $.getJSON(“js/servers.json”)可以完美地获取json数据(js/servers.json存储在本地文件结构中),但是当我尝试$.post(“js/servers.j

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

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

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

我的get函数:

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

$.post("js/servers.json", jsonServerObj).success(function ()
{
    alert("Data sent!");
})
.error(function ()
{
    alert("UH OH ERROR!");
});
以及我的帖子功能:

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

$.post("js/servers.json", jsonServerObj).success(function ()
{
    alert("Data sent!");
})
.error(function ()
{
    alert("UH OH ERROR!");
});
jsonServerObj被设置为JS文件的全局变量,post函数每次都返回成功警报,但是当页面重新加载时,JSON不是应该保存的


作为参考,我正在运行安卓4.3的安卓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应用程序安装在设备上,即使用户手动关闭或停止,该应用程序的本地存储数据也是持久的

我还通过以下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。如果来自非本地web服务的任何JSON数据可能被来自此应用程序的输入以外的内容更改,我不建议使用localStorage,因为这只是我正在原型化的应用程序的概念证明。

您将需要一个在本地运行的web服务器。您的http客户端(浏览器或其他)可以访问本地系统以读取
GET
,但不能写入
POST
。或者您可以获取JSON对象,而不是尝试将其存储在文件中,只需使用localStorage。您必须使用localStorage将
字符串化
解析
。如果您需要与该文件交互,那么您可以查看该文件,以便写回该文件。好的,这很有意义。由于这只是出于测试目的,我假设localStorage是正确的方式,但是当我可以访问web服务器时,
$.post
功能将正常工作,对吗?