6

サーバーにデータを送信する AngularJS リソース モジュールを作成しようとしています。デフォルトのコンテンツ タイプは「application/xml」のようです。content-type を「application/x-www-form-urlencoded」にオーバーライドしようとしています。通常の $http.post() を実行すると、コンテンツ タイプを設定でき、Firebug をチェックインすると、正しく設定されていることがわかります。リソースの POST メソッドを使用すると、コンテンツ タイプをデフォルトから変更できません。ドキュメントの説明どおりにやっていると思います。

http://jsfiddle.net/vBsUH/3/

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

angular.module('myResource', ['ngResource']).factory('myResource', function($resource){
   return $resource('/echo/json',{},{
      add:{ method:'POST', params:{ foo:'1' }, headers:{'Content-Type':'application/x-www-form-urlencoded'} }
   });
});

function MyCtrl($scope,$http,myResource) {
   $scope.click = function() {

      //This will make an ajax call with a content-type of application/xml    
      myResource.add();

      //this will make an ajax call with a content-type of application/x-www-form-urlencoded
      $http.post('/echo/json','foo=1',{'headers':{'Content-Type':'application/x-www-form-urlencoded'}});

   }
}​

AngularJS リソースを別のコンテンツ タイプで投稿する方法についてのアイデアや例をいただければ幸いです。

4

1 に答える 1

1

ジェイク、昨日、同様の質問にいくつかの情報を提供しました: https://stackoverflow.com/a/12876784/1367284

その応答を以下に貼り付けます。

開発ドキュメント (10 月 12 日現在) は $resource でヘッダーのオーバーライドが可能であることを示していますが、まだリリースされていません (v1.0.2 または v1.1.0)。ただし、この機能は v1.0.x および master ブランチにあります。その機能を利用するには、今のところ v1.0.x ブランチからビルドすることを検討してください。

ビルド方法: http://docs.angularjs.org/#H1_4

または、スナップショット ビルドからプルすることもできます: http://code.angularjs.org/snapshot/

この機能は次のリリースにあるようです。

于 2012-10-15T05:48:22.220 に答える