5

この jQuery ajax POST への AngularJS と同等の呼び出しはcontentTypeありsetRequestHeaderますか?

$.ajax({
    url: "http://localhost/songs",
    type: "POST",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    beforeSend: function (xhr) {
        xhr.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems");
    },
    success: function(data){
        console.log(data);
    }
});
4

1 に答える 1

11

$httpまたは$resourceサービスを使用することをお勧めします。$http ドキュメントでは、SOAPAction を設定するためのHTTP ヘッダーの設定に関するセクションを見ることができます。デフォルトのコンテンツ タイプは既に json に設定されています (ただし、それをオーバーライドすることもできます)。

これはあなたが始められるかもしれません.

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

module.config(function ($httpProvider) {
    $httpProvider.defaults.headers.post['SOAPAction'] = 'http://schemas.microsoft.com/sharepoint/soap/UpdateListItems';
});

function myController($http) {
    var data = { 'value1': 1, 'value2': 2 };

    $http.post('/songs', data).success(function (data) {
        console.log(data);
    });
}

このスレッドに基づいて、呼び出しごとに異なるヘッダーを設定できるとは思いませんが、それを許可する $resource サービスに変更が加えられる可能性があるようです。

更新:ドキュメントで見逃しているに違いありませんが、次のようにこの投稿$httpを使用して、呼び出しごとに異なるアクションを設定できます。

var data = { 'value1': 1, 'value2': 2 };

$http.post('/songs', data, {headers: {'SOAPActions': 'http://schemas.microsoft.com/sharepoint/soap/UpdateListItems'}})
    .success(function (data) {
        console.log(data);
    }); 
于 2012-07-24T05:05:07.607 に答える