AngularJSでPOST送信する方法

こんにちは!ぐちです。

POSTリクエスト

Cordova × AngularJSを使ってPOST通信をする際にパラメータ値がうまく渡らないといった内容の記事を多く見かけたので僕が実装した方法をご紹介したいと思います。※間違い等あるかもしれませんが。。。

リクエスト設定値

AngularJSのデフォルトではパラメータがJSON形式に変換されてしまうのでtransformRequestを設定して指定した書式で送信することができます。URLエンコード形式で送信するには諸説ありますがnullを指定することで上手く動きました。POSTリクエスト時に渡すオブジェクトを下記のように宣言しておきます。

var conf = {
    headers: {
        "Content-type": undefined
    },
    transformRequest: null
};

$http.post()

AngularJSの$httpを用いて以下のように記述することでURLエンコードされたパラメータをPOST送信することができます。

var fd = new FormData();
fd.append('id', 'hoge');
fd.append('name', 'ほげ');

$http.post(
    'http://192.168.11.100/api/getInfo/',
    fd,
    conf
)
.success(function(data, status, headers, config) {
    // 成功時の処理
})
.error(function(data, status, headers, config){
    // 失敗時の処理
});

今回はコード中心で短い記事ですがコピペで使えて便利!!ということで今回はこの辺で。