一尘不染

是否可以仅将数据写入本地json文件中?

angularjs

我试图仅使用angular命中html形式表单上的“提交”,然后将数据写入json文件。我知道我可以使用angular读取json文件,但不确定是否要创建文件。控制器中的onSubmit():

function onSubmit() {
    $scope.save = function() {
        $http.post('./temp/sample_data.json', JSON.stringify($scope.model)).then(function(data) {
            $scope.msg = 'Data saved';
        });
    };
};

的HTML:

<form name="form" ng-submit="onSubmit()" novalidate>
    <formly-form model="model" fields="fields"></formly-form><br/>
    <button type="submit">Submit</button>
</form>

不会创建sample_data.json,如果我创建一个空文件,它也不会填充数据。$
scope.model绝对包含数据。如果有人可以提供帮助,将不胜感激。谢谢,阿隆。


阅读 366

收藏
2020-07-04

共1个答案

一尘不染

是否可以仅将数据写入本地json文件中?

不会。即使您是从本地文件系统(例如file://myfile.html)或本地Web服务器(例如http://localhost/myfile.htmlhttp://host- on-my-intranet/myfile.html)运行页面,您仍然无法直接从浏览器托管的JavaScript代码写入文件。

两种选择:

  1. 将其发送到可以将其写出的内容(例如服务器),或者

  2. 提供它作为data:URI(如果可以的话),用户可以右键单击并选择“另存为…”。

这是data:为一些JSON文本创建URI的方法:

    var uri = "data:application/json;charset=UTF-8," + encodeURIComponent(theJSON);

*#2的 *完整示例

var theData = {

  foo: "bar"

};

var theJSON = JSON.stringify(theData);

var uri = "data:application/json;charset=UTF-8," + encodeURIComponent(theJSON);



var a = document.createElement('a');

a.href = uri;

a.innerHTML = "Right-click and choose 'save as...'";

document.body.appendChild(a);
2020-07-04