2015-04-06 2 views
2

Я пытаюсь понять, как передавать данные в API через Angular's $resource. Я могу GET или запросить любые данные с моего тестового сервера в настоящее время, но я также хочу посмотреть, как POST новых данных на сервер. Я использую этот код, который я адаптированный из AngularJS документов:

.factory("ResourceTest", function($resource) { 
    return $resource("http://mywebsite.com/api/:id", {id:'1'}, { 
     charge: {method:'POST', params:{charge:true}} 
    }); 
}); 

Когда я бег ResourceTest.charge(); в моем контроллере, он отлично работает, и я вижу POST запрос в моих журналах сервера. Но когда я пытаюсь передать какие-либо параметры при вызове функции (например, ResourceTest.charge({test:false});), запрос не будет проходить, и я не вижу никакого запроса в журналах. (то же самое происходит с , в случае, если кому-то интересно)

Кто-нибудь знает, если это всего лишь ошибка кода, которую я здесь делаю? Я довольно новичок в AngularJS. Благодаря!

+0

О, а также - Я могу отправлять данные с помощью '$ http' – Caleb

ответ

1

Похоже, что вы тянете из угловых документов, чтобы попытаться запустить и запустить ресурс. У меня было довольно много времени, и я не нашел документы очень полезными в понимании ngResource и о том, как правильно его реализовать.

Эта статья очищает вещи совсем немного:

http://www.sitepoint.com/creating-crud-app-minutes-angulars-resource/

0

Что вы ожидаете объект $ ресурса делать?

Если вы передадите объект данных функции $ resource charge, она отправит данные в качестве полезной нагрузки запроса к указанному вами URL-адресу. См. Рабочий пример ниже.

myApp.factory("ResourceTest", function($resource) { 
    return $resource("http://mywebsite.com/api/:id", {id:'1'}, { 
     charge: {method:'POST', params:{charge:true}} 
    }); 
}); 
myApp.controller('MyCtrl', function($scope, ResourceTest) { 
    $scope.name = 'Superhero'; 
    $scope.test = function (userInput) { 
     console.log("check the browser console Network > XHR to see the request payload"); 
     ResourceTest.charge({'userInput':userInput}); 
    } 
}); 

fiddle example

1

Наконец понял. По-видимому, заголовки запросов должны были быть изменены. Вот код, который я добавил, чтобы заставить его работать, надеюсь, что это поможет кому-то другому.

.config(function($httpProvider) { 
    $httpProvider.defaults.headers.post = {'Content-Type': 'application/x-www-form-urlencoded'}; 
}) 
Смежные вопросы