2014-06-29 5 views
0

Я создаю небольшое приложение для извлечения данных из одного файла JSON и отправки его в другой файл JSON. Я использую услуги AngularJS и ngResource и $http для обеспечения функциональности.Не удалось получить данные POST в AngularJS

Я смог прочитать данные с использованием метода GET, но POST не отправил данные в другой файл JSON.

Ниже приведены мои контроллеры и услуги определения:

'use strict'; 

/* Controllers */ 

var boookbAppControllers = angular.module('boookbAppControllers', []); 

boookbAppControllers.controller('boookbAppCtrl', ['$scope','$http','Book', 
    function($scope,$http,Book) { 

    $scope.way=["Normal","$http","RestFul"] 



    $http.get('data/books.json').success(function(data) { 
    $scope.b1 = data; 

    $scope.addBook1=function(){ 


     $http.post('data/newbooks.json',{ "catalogRefIds" : $scope.books[0].title, "productId" : $scope.books[0].author}).then(function(response,status){ 
     $scope.a=status; 
     alert($scope.a); 

     }); 
    } 

    $scope.b2 = Book.query(); 


    $scope.newBookName=""; 
    $scope.userBook=""; 
    $scope.userBookAuthor=""; 
    $scope.newBookAuthor=""; 
    $scope.bookData={}; 

    $scope.addBook=function(){ 
    $scope.userBook=$scope.newBookName; 
    $scope.userBookAuthor=$scope.newBookAuthor; 

    Book.add({},$scope.bookData); 

    } 
    }); 
    }]); 


'use strict'; 

/* Services */ 

var boookbAppServices = angular.module('boookbAppServices', ['ngResource']); 

boookbAppServices.factory('Book', ['$resource', 
    function($resource){ 
    return $resource('data/:bookId.json', {}, { 
     query: {method:'GET', params:{bookId:'books'}, isArray:true}, 
     add: {method:'POST',params:{bookId:'books'},isArray: true}  
    }); 
    }]); 

я проверил следы POST данных и никаких данных не посылается.

+2

Вы не можете просто «POST» в файл. Для этого вам потребуется какой-то серверный скриптинг. Как выглядит ваша базовая установка? – m90

+0

Возможно, вы в этом случае: http://stackoverflow.com/q/19618010/ – glepretre

ответ

0

Я не знаю, что вы пытаетесь сделать POSTing в .json-файле. При этом, предполагается, что вы на самом деле обработки на стороне запроса POST-сервера и не видим каких-либо данных, то это, скорее всего, вопрос:

Угловые сообщения данных иначе, чем JQuery, например - она ​​отправляет его в application/json и не application/x-www-form-urlencoded , Итак, в PHP, например, если вы проверите $_POST['key'], он не найдет его. Ваши варианты там либо справиться с ней на стороне сервера:

$_JSON = file_get_contents("php://input"); 
$_JSON = json_decode($_JSON, TRUE); 
echo $_JSON['key']; 

Или вы можете превратить его в форм-данных это на стороне клиента:

boookbAppControllers.config(function($httpProvider) { 
    $httpProvider.defaults.headers.post = {'Content-Type': 'application/x-www-form-urlencoded'}; 
    $httpProvider.defaults.transformRequest = function(data) { 
     if (data === undefined) return data; 
     var clonedData = clone(data); 
     for (var property in clonedData) 
     //you could do this with hasOwnProperty probably, 
     //but this works unless you prepend variable keys 
     //with $ 
     if (property.substr(0, 1) == '$') 
      delete clonedData[property]; 

     return $.param(clonedData); 
    }; 
}); 
0

Пожалуйста, обратите внимание на $ http.post синтаксис: мы необходимо передать данные с ключевым словом данные инкапсулировать фактические данные.

$http.post('data/newbooks.json', data : { "catalogRefIds" : $scope.books[0].title, "productId" : $scope.books[0].author}).then(function(response,status){ 
      $scope.a=status; 
      alert($scope.a); 
      }); 
Смежные вопросы