2016-01-07 4 views
-1

Я пытаюсь сохранить массив в файл JSON, расположенный на веб-сервере. Ответ удался, но когда я открываю JSON, он полностью пуст.

Я попытался создать объект JSON самостоятельно, но он дал те же результаты.

Вот процесс:

app.controller('BookController', ['$window', '$http', function ($window, $http) { 
 
this.contacts = []; 
 

 
this.exportContacts = function(contacts){ 
 
    $http({ 
 
     method: "POST", 
 
     url: '/data/contacts.json', 
 
     headers: { 'Content-Type': 'application/json' }, 
 
     data: contacts 
 
    }).then(function goodCall(){ 
 
     $window.alert("Save done!"); 
 
    }, function badCall(){ 
 
     $window.alert("Failed to save error! error: " + $http.status); 
 
    }); 
 
}; 
 
}]);

я заполнить массив входов с помощью формы:

<form name="addCont" ng-show="showForm" ng-controller="ContactController as contactCtrl" ng-submit="contactCtrl.addContact(addCont, bookCtrl.contacts)" novalidate> 
 
<label> 
 
    First Name: 
 
    <input name="fname" type="text" required ng-pattern="/^(\D)+$/" ng-model="contactCtrl.contact.firstName"></input> 
 
    <span style="color:red" ng-show="addCont.fname.$dirty && addCont.fname.$invalid"> 
 
     <span ng-show="addCont.fname.$error.required">First Name is required.</span> 
 
     <span ng-show="addCont.fname.$error.pattern">First name must contain letters only!</span> 
 
    </span> 
 
</label> 
 
<label> 
 
    Last Name: 
 
    <input name="lname" type="text" ng-pattern="/^(\D)+$/" ng-model="contactCtrl.contact.lastName"></input> 
 
    <span style="color:red" ng-show="addCont.lname.$dirty && addCont.lname.$invalid"> 
 
     <span ng-show="addCont.lname.$error.pattern">Last name must contain letters only!</span> 
 
    </span> 
 
</label> 
 
<label> 
 
    Phone Number: 
 
    <input name="phone" type="tel" required ng-model="contactCtrl.contact.phone" ng-minlength="9" ng-maxlength="10" ng-pattern="/^(\d)+$/"></input> 
 
    <span style="color:red" ng-show="addCont.phone.$dirty && addCont.phone.$invalid"> 
 
     <span ng-show="addCont.phone.$error.minlength">Phone number is too short!</span> 
 
     <span ng-show="addCont.phone.$error.maxlength">Phone number is too long!</span> 
 
     <span ng-show="addCont.phone.$error.required">Phone number is required!</span> 
 
     <span ng-show="addCont.phone.$error.pattern">Must not contain letters!</span> 
 
    </span> 
 
</label> 
 
<label> 
 
    Notes: 
 
    <input name="notes" type="text" ng-model="contactCtrl.contact.notes"></input> 
 
</label> 
 
<input type="submit" value="Submit" ng-disabled="addCont.fname.$invalid || addCont.lname.$invalid || addCont.phone.$invalid" /> 
 
</form>

Так массив шо uld посмотреть такие вещи:

[{ 
    firstName: "Tim", 
    lastName: "asdxc", 
    notes: "asdasd", 
    phone: "0532753940" 
},{ 
    firstName: "Timz", 
    lastName: "asdasd", 
    notes: "asdasd", 
    phone: "123123123" 
}] 

Должен ли я как-то разбирать массив перед его отправкой?

+0

я думаю, что URL вы даете $ HTTP веб-сервис. Он не будет работать с файлом – AlainIb

+0

Взгляните на http://stackoverflow.com/questions/17547227/angular-js-post-request-not-sending-json-data – mccainz

ответ

0

Насколько я понимаю ваш код, вам не хватает важного мира. Вам нужен RESTful-подобный сервис на вашем сервере. В противном случае вы не сможете сохранять/записывать файлы на своем сервере.

Я рекомендую вам ознакомиться с node и может быть express для начала.

0

URL, который вы указываете в $ http, должен быть веб-сервисом. Он не будет работать с файлом.

Вы должны создать веб-сервиса, который создания файла на стороне сервера (PHP/Node.js/Java ...) и называют его от $ HTTP

0

Я думаю, что URL свойство должно быть «API/контакты» : Учитывая, что вы должны иметь контроллер веб-службы или веб-апи: ContactsController

$http({ method: "POST", url: 'api/contacts', headers: { 'Content-Type': 'application/json' }, data: contacts }).then(function goodCall(){ $window.alert("Save done!"); }, function badCall(){ $window.alert("Failed to save error! error: " + $http.status); });

Смежные вопросы