4

GET パラメータに一連のチェックボックス (client_status) がある場合、AngularJS で $resource ライブラリを使用して適切にシリアライズされた GET リクエストを送信しようとすると問題が発生します。

これは、現在コントローラーにあるコードです。

$scope.filters = {
    client_status: ["CLIENT_STATUS_FORMER", "CLIENT_STATUS_ACTIVE"],
    client_reference: "e"
}

$scope.records = Client.get($scope.filters, function(data){
    ...
}

上記は、次の GET リクエストを送信します。

f.json?client_reference=e&client_status=CLIENT_STATUS_FORMER,CLIENT_STATUS_ACTIVE

ただし、私が理解していることから、上記は正しい形式ではないようです。誰かがここで私を少し案内してもらえますか? 以下は私が期待するものです:

f.json?client_reference=e&client_status%5B%5D=CLIENT_STATUS_ACTIVE&client_status%5B%5D=CLIENT_STATUS_FORMER

よろしくお願いいたします。

トーマス

4

2 に答える 2

0

$http プロバイダーで行った方法は次のとおりです。

$http({
    url:'api/api.asp',
    method: 'GET',
    params: {
        client_status: ["CLIENT_STATUS_FORMER", "CLIENT_STATUS_ACTIVE"],
        client_reference: "e"
    }
}).then(function (result) {
    $scope.test = result.data;
});

サーバーへの呼び出しは次のようになります。

api/api.asp?client_reference=e&client_status=%5B%22CLIENT_STATUS_FORMER%22%2C%22CLIENT_STATUS_ACTIVE%22%5D

そしてサーバー上(これは古典的なasp vbscriptです):

<%
    Response.Write Request.QueryString("client_status")
%>

どちらが表示されますか:

["CLIENT_STATUS_FORMER","CLIENT_STATUS_ACTIVE"]

そして、それを通常の配列として使用できます。

編集: $resource プロバイダーと非常によく似ているはずです:

$resource('api/api.asp', {}, {
    get: {
        method: 'GET',
        params: {
            client_status: ["CLIENT_STATUS_FORMER", "CLIENT_STATUS_ACTIVE"],
            client_reference: "e"
        }
    }
);
于 2013-04-11T05:21:56.220 に答える