我想使用javascript编辑json文件。该文件是“client.json”,位于本地系统,仅在本地系统进行修改。我正在使用表单来创建新的客户端详细信息,我希望将这些详细信息作为对象附加到json文件。
{"clients":[
{
"name":"xxxx",
"team":"yyy",
"location": {
"city":"beijing",
"country":"china"
},
"wdays":{"start":"Monday","end":"friday"},
"whours":{"start":"9 A.M","end":"6 P.M" }
},
{
"name":"xxxx",
"team":"yyy",
"location": {
"city":"new york",
"country":"usa"
},
"wdays":{"start":"Monday","end":"friday"},
"whours":{"start":"9 A.M","end":"6 P.M" }
}
]}
以下javascript代码是关于从表单读取数据并将该数据作为json对象附加.........`
</script>
<script type="text/javascript">
function addtojson()
{
var client_name=(document.getElementById("cname")).value;
var country=document.getElementById("country").value;
var city=document.getElementById("city").value;
var wtimeto=document.getElementById("wtimeto").value;
var wtimefrom=document.getElementById("wtimefrom").value;
var wdayto=document.getElementById("wdayto").value;
var wdayfrom=document.getElementById("wdayfrom").value;
jQuery.getJSON('client.json')
.done(function(data) {
var cobj=new Object();
cobj.name=client_name;
cobj.team="YYY";
cobj.location=new Object();
cobj.location.city=city;
cobj.location.country=country;
cobj.wdays=new Object();
cobj.wdays.start=wdayto;
cobj.wdays.end=wdayfrom;
cobj.whours=new Object();
cobj.whours.start=wtimeto;
cobj.whours.end=wtimefrom;
var myString = JSON.stringify(cobj);
alert('I am working');
alert(myString);
data.clients.push(cobj);
alert(JSON.stringify(data.clients[0]));//it gives previous first array object
alert(JSON.stringify(data.clients[1]));//it gives previous second array object
alert(JSON.stringify(data.clients[2]));//it gives the new appended array object
});
return true;
}
</script>`
虽然数据在程序中被本地修改,但json文件没有得到更新?????????
答案 0 :(得分:1)
浏览器中的JavaScript通常不允许写入本地磁盘。无论如何,在加载JSON文件后,您将在内存中编辑已加载的文档,这对磁盘上的文件没有任何影响,直到您将更改写入磁盘。这是您将遇到不允许从脚本写入磁盘的问题。
你可能能够使用动态生成的数据获取一些东西:URI触发下载提示以下载新版本的文件并将其保存到磁盘。有关详细信息,请参阅http://en.wikipedia.org/wiki/Data_URI_scheme。