我试图从AngularJS传递一个数组到我们的API.然而,当发送时,重复参数而不是作为数组发送.这是我的代码:
angular.module('sigApp.services',['ngResource']). // Fetch cases from server service('caseFetcher',['$resource',function($resource) { this.getCases = function(params) { console.log('params: ',params); return $resource('/v1/cases/',params); }; }]);
这是生成的URL(缩写):/ v1 / cases?status = OPEN& status = HELD
这是我想要的URL:/ v1 / cases?status [0] = OPEN& status [1] = HELD(aka?status [0] = OPEN& status1 = HELD)
以下是上面代码中记录的对象的屏幕截图:
我已经尝试了最新版本的angularjs(1.2rc1),并尝试了Restangular插件.无论我尝试什么,我得到的参数通过多次,而不是数组格式.我们的API无法使用相同键的多个值.
有任何想法吗?
编辑:当另一个问题(AngularJS: ngResource and array of object as params to URL)不是这样的时候,有几个人把这个标记为重复.另一个问题涉及通过POST发送数组,并且我正在尝试执行一个GET请求(默认情况下设置为isArray:true),并且我想只传递一个数组的参数,哪个答案似乎不帮我.有人可以帮忙吗?
更新我在下面回答了我自己的问题,但评论说,我给任何谁遇到这个问题的更多的信息.我们正在使用Play Framework 2.1作为后端.我无法生成最初发布在上面的编号数组,但是可以让它只是一个非索引数组,因此这是最终生成的URL.
/ v1 / cases?status [] = OPEN& status [] = HELD(aka?status [] = OPEN& status [] = HELD)
希望这有助于别人
我通过改变params被设置为$资源的方式来解决了我自己的问题.代替:
$scope.params.status = ['OPEN','HELD'];
我用了:
$scope.params["status[]"] = ['OPEN','HELD'];
这允许我根据需要检索服务器上的值.