当我的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
非常感谢您的帮助.
托马斯
解决方法
您可以使用$resource完成此操作,方法是将client_status更改为’client_status []’,如下所示:
$scope.filters = { 'client_status[]': ["CLIENT_STATUS_FORMER",client_reference: "e" }
我为此创建了一个plunker:http://plnkr.co/edit/QXIaY8XlMUfOy7RNMKKv?p=info
我在那里放了一个虚拟URL,所以如果你在运行plunker时使用Firebug或Chrome开发工具,你会看到http://example.com/api的请求显示正确添加了[]到GET请求中.
在这个问题的答案中注意到类似的解决方案:
https://stackoverflow.com/a/18322252/1866964