私は AngularJS の初心者で、AngularJS で POST リクエストを作成しようとすると問題に直面しましたが、パラメーターが POST されません。RESTful インターフェイスとして Sinatra を使用しています。
それが私の Sinatra バックエンドの外観です。
post '/layer/:layer_id' do
@layer = PageLayer.where(id: params[:layer_id]).first
@layer.content = params[:content]
@layer.save
end
Postman chrome 拡張機能を使用して POST しようとすると、動作します! シナトラはコンテンツを適切に保存します。したがって、バックエンドが正常に機能していると確信しています。
それが私のAngularテストコードの外観です:
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 ではできませんか? Angular は空の「コンテンツ」を返すので、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
どの角度の POST を正確にログに記録するにはどうすればよいですか?