gpt4 book ai didi

javascript - Jquery 将 JSON 发布到本地文件

转载 作者:行者123 更新时间:2023-11-29 21:11:48 25 4
gpt4 key购买 nike

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

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

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

我的获取函数:

$.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 不是应该保存的。

作为引用,我正在运行 Android 4.3 的 Android HTC One 上对此进行测试

最佳答案

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

好的,所以无法像某些评论中提到的那样发布到本地文件,但是可以使用 localStorage 和 JSON.stringifyJSON.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 返回真,除非应用程序是在安装后首次打开。我不建议对来自非本地 Web 服务的任何 JSON 数据使用 localStorage,如果该数据可能会被该应用程序的输入以外的其他内容更改,因为这只是我正在制作原型(prototype)的应用程序的概念证明.

关于javascript - Jquery 将 JSON 发布到本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22536620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com