2015-05-17 39 views
10

我试图将数据写入一个json文件后,使用只有有角度的HTML格式窗体上的“提交”,但没有发生任何事情。我知道我可以使用角度阅读json文件,但不知道如何创建文件。是否可以将数据写入本地json文件中,但只有角?

<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不创建,如果我创建一个空文件不与数据填满,以及: 的onsubmit()的控制器:

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

HTML。 $ scope.model保证包含数据。 如果任何人都可以提供帮助,我们将非常感谢。 谢谢,阿隆。

回答

12

是否有可能将数据写入到一无所有,但角度本地JSON文件?

即使你正在运行从本地文件系统中的页号(例如,file://myfile.html)或从本地网络服务器(例如http://localhost/myfile.htmlhttp://host-on-my-intranet/myfile.html),你仍然有直接写入文件中没有任何手段来自浏览器托管的JavaScript代码。

两个选择:

  1. 把它寄给你的东西(例如服务器),可以写出来,或

  2. data: URI提供它(如果可行的话,你的情况),其用户可以单击鼠标右键,选择“另存为...”

    这里是你如何对一些JSON文本创建data: 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);

+0

好了它。尝试了第二选择并且运作良好。无论如何,未来的服务器将涉及。谢谢! –

5

编号

角运行客户端。

如果要将数据写入服务器(即使与浏览器位于同一台计算机上),则需要服务器端代码才能完成此操作。

1

您无法从Javascript访问本地文件系统(直接)。这是出于安全原因而强制执行的(并且在您考虑时很有意义!)。

Local file access with javascript

1

因为这是不可能的,你可以尝试另一条路线。您的$ scope.save没有被调用的方式,只分配。

$scope.save = function() { 
    localStorage.model = JSON.stringify($scope.model); 
}; 
function onSubmit() { 
    $scope.save(); 
    $scope.msg = 'saved'; 
}; 

为了让您的模型回来做这个初始化:

if (localStorage.model) 
    $scope.model = JSON.parse(localStorage.model); 
+2

localStorage几乎没有资格作为json文件 –

+0

@SergioTulentsev不知道具体要求是什么。提问者对于网络开发来说是新手,并且正在给出一种基于当前技术的局限性而不起作用的推理途径。如果你想提供一个可能的替代解决方案,这被认为比仅仅说明显而易见的努力更多。 –

相关问题