2013-03-29 6 views
4

У меня проблемы с использованием библиотеки $ resource в AngularJS для отправки правильно сериализованного запроса GET, когда имеется массив флажков (client_status) в моих параметрах 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 

Ваша помощь очень признательна.

Томас

ответ

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 

А на сервере (здесь классический осины vbscript):

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

Какие дисплеи:

["CLIENT_STATUS_FORMER","CLIENT_STATUS_ACTIVE"] 

И вы можете использовать его как обычный массив.

EDIT: Это должно быть очень схожа с провайдером $ ресурсов:

$resource('api/api.asp', {}, { 
    get: { 
     method: 'GET', 
     params: { 
      client_status: ["CLIENT_STATUS_FORMER", "CLIENT_STATUS_ACTIVE"], 
      client_reference: "e" 
     } 
    } 
); 
3

Вы можете выполнить это с помощью $ ресурса путем изменения client_status к 'client_status [], как это:

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

Я создал plunker для этого: http://plnkr.co/edit/QXIaY8XlMUfOy7RNMKKv?p=info

Я положил фиктивный URL там, так что если вы используете Firebug или Chr ome dev при запуске плунжера вы увидите запрос http://example.com/api, в котором показано правильное добавление [] в запрос GET.

Аналогичное решение было отмечено в ответе на этот вопрос: https://stackoverflow.com/a/18322252/1866964