Javascript 无法在客户端编辑json文件

Javascript 无法在客户端编辑json文件,javascript,jquery,json,Javascript,Jquery,Json,我想使用javascript编辑json文件。该文件为“client.json”,位于本地系统中,仅在本地系统中修改。我正在使用表单创建新的客户机详细信息,我希望这些详细信息作为对象附加到json文件中 {"clients":[ { "name":"xxxx", "team":"yyy", "location": { "city":"beijing",

我想使用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>`

函数addtojson()
{
var client_name=(document.getElementById(“cname”).value;
var country=document.getElementById(“国家”).value;
var city=document.getElementById(“城市”).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')
.完成(功能(数据){
var cobj=新对象();
cobj.name=客户名称;
cobj.team=“YYY”;
cobj.location=新对象();
cobj.location.city=城市;
cobj.location.country=国家;
cobj.wdays=新对象();
cobj.wdays.start=wdayto;
cobj.wdays.end=wdayfrom;
cobj.whours=新对象();
cobj.whours.start=wtimeto;
cobj.whours.end=wtimefrom;
var myString=JSON.stringify(cobj);
警惕(“我正在工作”);
警报(myString);
数据.客户端.推送(cobj);
警报(JSON.stringify(data.clients[0]);//它给出了前面的第一个数组对象
alert(JSON.stringify(data.clients[1]);//它给出前一个第二个数组对象
alert(JSON.stringify(data.clients[2]);//它给出了新的附加数组对象
});
返回true;
} 
`

虽然程序中的数据正在本地修改,但json文件没有更新?

浏览器中的JavaScript通常不允许写入本地磁盘。无论如何,加载JSON文件后,您将在内存中编辑加载的文档,在将更改写入磁盘之前,这不会影响磁盘上的文件。在这里,您将遇到不允许从脚本写入磁盘的问题


您可能能够使用动态生成的数据来启动一些工作:URI触发下载提示,以下载文件的新版本并将其保存到磁盘。有关更多信息,请参阅。

浏览器中的JavaScript通常不允许写入本地磁盘。无论如何,加载JSON文件后,您将在内存中编辑加载的文档,在将更改写入磁盘之前,这不会影响磁盘上的文件。在这里,您将遇到不允许从脚本写入磁盘的问题


您可能能够使用动态生成的数据来启动一些工作:URI触发下载提示,以下载文件的新版本并将其保存到磁盘。有关更多信息,请参阅。

是否有任何方法可以写入该文件或重写所有内容。不,浏览器中运行的JavaScript没有这些权限;允许脚本写入PC上的文件将是一个巨大、可怕的安全漏洞。您可能能得到的最接近的方法(我不知道它是否真的有效)是使用动态生成的数据:URL-请参阅“”。请注意,“在IE 8和9中,数据URI只能用于图像,但不能用于导航或Javascript生成的文件下载”。是否有任何方法可以写入该文件,或者重写所有内容。不,浏览器中运行的Javascript没有这些权限;允许脚本写入PC上的文件将是一个巨大、可怕的安全漏洞。您可能能得到的最接近的方法(我不知道它是否真的有效)是使用动态生成的数据:URL-请参阅“”。请注意,“在IE8和IE9中,数据URI只能用于图像,但不能用于导航或Javascript生成的文件下载”。