2

同等の jQuery 関数

$.post("/example/handler", {foo: 1, bar: 2});

post パラメータを使用してリクエストを作成しますfoo=1&bar=2。一方

$http.post("/example/handler", {foo : 1, bar: 2});

バージョンではなくPOST本文でリクエストを送信しているようです。ここで期待される動作だと思うものを得るには、次のようなことをする必要があります{"foo":1,"bar":2}form-uriencoded

myModule.config(function ($httpProvider) {
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
    $httpProvider.defaults.transformRequest = function(data){
        return _.map(data, function (val, k) { return encodeURI(k) + "=" + encodeURI(val); }).join("&");
    }
});

モジュール構成で。

$http.post引数処理の背後にある理論的根拠を説明できる人はいますか? Angulars のデフォルトの動作や、目に見えない隠れた利点が必要な状況はありますか?

4

2 に答える 2

2

私は HTTP プロトコルにあまり詳しくありませんが、POST リクエストは通常​​、パラメーターではなく、コンテンツを送信するために使用されますか? 通常、GETはパラメータで使用されると思います。

config オブジェクトを POST リクエストに追加し、params プロパティを指定できるはずだと思います。

params – {Object.} – URL の後に ?key1=value1&key2=value2 に変換される文字列またはオブジェクトのマップ。値が文字列でない場合は、JSON 化されます。

したがって、次のようなものが機能する可能性があります。

$http.post("/example/handler", {}, {params: {foo: 1, bar: 2} })

(上記のコード スニペットはテストされていません...構文が正しいかどうかはわかりません。)

于 2012-12-28T04:55:55.530 に答える
0

あなたはあなた自身の質問に答えたと思います。JS オブジェクトをフォーム エンコーディングに変換するのは手間がかかり、構造が複雑になると扱いにくくなりますが、JS オブジェクトを JSON に変換するのは簡単であり、デフォルトです。JSON エンコーディングの受け入れに問題があるバックエンドを使用していますか?

于 2012-12-28T05:17:12.627 に答える