Я новичок в AngularJS, и я столкнулся с проблемой, когда пытаюсь сделать запрос POST с помощью AngularJS, и у него нет параметров с ним. Я использую Sinatra как интерфейс RESTful.AngularJS POSTs пустые запросы?
Вот как мой Синатра бэкенд выглядит:
post '/layer/:layer_id' do
@layer = PageLayer.where(id: params[:layer_id]).first
@layer.content = params[:content]
@layer.save
end
Если попытаться POST с расширением хромированной Почтальон - это работает! Sinatra сохраняет контент должным образом. Поэтому я уверен, что бэкэнд работает так, как должен.
Вот как мой угловой тестовый код выглядит:
TestCtrl = ($scope, $routeParams, $http, $resource) ->
$scope.layer = []
Layer = $resource('/layer/:id', {id:'@id'})
$scope.layer = Layer.get {id: $routeParams.layerId}, ->
console.log "Got you!"
$scope.saveContent = ->
$scope.layer.$save()
console.log "Saved!"
angular.module('appDirectives', []).directive "test", ->
return (scope, element, attrs) ->
element.bind "blur", ->
console.log("blur!")
scope.saveContent()
и HTML-код:
<div>Content: {{layer.content}}</div>
<div>
<form>
<input type="text" test ng-model="layer.content">
</form>
</div>
Итак, единственный вопрос: что случилось? Почему я могу сделать правильный запрос с Postman, но не с angularJS? Угловая возвращает пустой контент, поэтому Sinatra сохраняет его как «» каждый раз.
Я также придает структуру слоя:
g {id: 27245, page_id: 2302, external_id: 26518, original_upload: null…}
content: "dfgdfg"
external_id: 26518
id: 27245
layerNumber: 8
page_id: 2302
Как я могу войти, что именно угловые сообщения?
Вы можете попробовать '$ save' без параметров. Поскольку у вас уже есть объект. – Chandermani
пробовал. Он отправляет запрос в/layer/вместо/layer /: layerId, поэтому Sinatra дает нам ошибку. Но я попытался слегка изменить контроллер, чтобы он размещался с пустыми save() и на правый адрес. Но он все еще POSTs пустой запрос ... Как я могу регистрировать, какие именно угловые POST? –
Посмотрите объект '$ scope.layer' и посмотрите, есть ли у него свойство' layer_id', и он установлен для исправления значения внутри отладчика. А также проверьте наличие других свойств на уровне и попробуйте метод $ save без параметров. – Chandermani