リクエストペイロードではなくフォームデータとしてデータを投稿するにはどうすればよいですか? 質問する

リクエストペイロードではなくフォームデータとしてデータを投稿するにはどうすればよいですか? 質問する

以下のコードでは、AngularJS$httpメソッドが URL を呼び出し、xsrf オブジェクトを「リクエスト ペイロード」として送信します (Chrome デバッガーのネットワーク タブで説明されているとおり)。jQuery$.ajaxメソッドは同じ呼び出しを行いますが、xsrf を「フォーム データ」として送信します。

AngularJS でリクエスト ペイロードではなくフォーム データとして xsrf を送信するにはどうすればよいでしょうか?

var url = 'http://somewhere.com/';
var xsrf = {fkey: 'xsrf key'};

$http({
    method: 'POST',
    url: url,
    data: xsrf
}).success(function () {});

$.ajax({
    type: 'POST',
    url: url,
    data: xsrf,
    dataType: 'json',
    success: function() {}
});

ベストアンサー1

渡される $http オブジェクトに次の行を追加する必要があります。

headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}

渡されたデータは URL エンコードされた文字列に変換する必要があります。

> $.param({fkey: "key"})
'fkey=key'

つまり、次のようになります。

$http({
    method: 'POST',
    url: url,
    data: $.param({fkey: "key"}),
    headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
})

から:https://groups.google.com/forum/#!msg/angular/5nAedJ1LyO0/4Vj_72EZcDsJ

アップデート

AngularJS V1.4で追加された新しいサービスを使用するには、

おすすめ記事