2015-05-17 16 views
10

Tôi đang cố gắng ghi dữ liệu vào tệp json sau khi nhấn "Gửi" trên dạng formly html chỉ sử dụng góc cạnh, nhưng không có gì đang xảy ra. Tôi biết tôi có thể đọc một tập tin json bằng cách sử dụng góc cạnh nhưng không chắc chắn về việc tạo tập tin. onSubmit() trong bộ điều khiển:Có thể ghi dữ liệu vào tệp json cục bộ không có gì ngoài góc cạnh không?

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> 

Các sample_data.json không được tạo ra và nếu tôi có thể tạo một tập tin rỗng nó không lấp đầy với các dữ liệu là tốt. $ Scope.model defenitly chứa dữ liệu. Nếu bất cứ ai có thể giúp đỡ, nó sẽ được đánh giá rất cao. Cảm ơn, Alon.

Trả lời

12

Có thể ghi dữ liệu vào tệp json tại địa phương mà không có gì nhưng góc?

số Thậm chí nếu bạn đang chạy các trang từ hệ thống tập tin địa phương (ví dụ, file://myfile.html) hoặc từ một máy chủ web địa phương (ví dụ, http://localhost/myfile.html hoặc http://host-on-my-intranet/myfile.html), bạn vẫn không có phương tiện bằng văn bản trực tiếp vào một tập tin từ mã JavaScript được lưu trữ trên trình duyệt.

Hai lựa chọn:

  1. Gửi cho một cái gì đó (ví dụ, một máy chủ) có thể viết nó ra, hoặc

  2. Cung cấp nó như là một URI data: (nếu khả thi trong trường hợp của bạn) mà người dùng có thể nhấp chuột phải và chọn "save as ..."

    đây là cách bạn tạo ra một URI data: đối với một số văn bản JSON:

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

Full Ví dụ của # 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

Okay nhận nó. Đã thử sự lựa chọn thứ hai và làm việc tốt. Dù sao một máy chủ tương lai sẽ được tham gia. Cảm ơn! –

5

No.

Góc chạy phía máy khách.

Nếu bạn muốn ghi dữ liệu vào máy chủ (ngay cả một trên cùng một máy tính với trình duyệt) thì bạn cần mã phía máy chủ để thực hiện.

1

Bạn không thể truy cập hệ thống tệp cục bộ (trực tiếp) từ Javascript. Điều này được thực thi vì lý do bảo mật (và có ý nghĩa khi bạn nghĩ về nó!).

Local file access with javascript

1

Vì đây là không thể bạn có thể thử một con đường khác. $ Scope.save của bạn đã không được gọi bằng cách này, chỉ được chỉ định.

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

Để có được mô hình của bạn trở lại làm điều này trên init:

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

localStorage hầu như không đủ điều kiện dưới dạng tệp json –

+0

@SergioTulentsev Không biết yêu cầu cụ thể là gì. Người hỏi là người mới phát triển web và đang đưa ra một con đường lý luận có thể không hoạt động dựa trên những hạn chế của công nghệ hiện tại. Nếu bạn đưa ra một giải pháp thay thế có thể, điều này được coi là nỗ lực nhiều hơn là chỉ nói rõ ràng. –

Các vấn đề liên quan