Sco*_*ger 9 playframework-2.0 angularjs
我试图从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);
};
}]);
Run Code Online (Sandbox Code Playgroud)
以下是生成的URL(缩写):/ v1/cases?status = OPEN&status = HELD
这是我想要的URL:/ v1/cases?status%5B0%5D = OPEN&status%5B1%5D = HELD(又名?status [0] = OPEN&status 1 = HELD)
以下是上述代码中记录的对象的屏幕截图:

我已经尝试了最新版本的angularjs(1.2rc1)并尝试了Restangular插件.无论我尝试什么,我都会多次传递params,而不是数组格式.我们的API无法使用相同键的多个值.
有任何想法吗?
编辑:当另一个问题(AngularJS:ngResource和对象数组作为URL的参数)完全不同时,有几个人将此标记为重复.另一个问题涉及通过POST发送一个数组,我正在尝试做一个GET请求(设置为isArray:默认为true),我想只传递一个数组的参数,这个答案似乎没有帮我.那么有人可以帮忙吗?
更新我在下面回答了我自己的问题但是作为评论我正在为遇到此问题的任何人提供更多信息.我们正在使用Play Framework 2.1作为后端.我无法生成我最初在上面发布的编号数组,但能够让它只是一个非索引数组,所以这是最终生成的URL:
/ v1/cases?status%5B%5D = OPEN&status%5B%5D = HELD(又名?status [] = OPEN&status [] = HELD)
希望这有助于其他人
Sco*_*ger 18
我通过改变传递给$ resource的params的设置来解决我自己的问题.代替:
$scope.params.status = ['OPEN','HELD'];
Run Code Online (Sandbox Code Playgroud)
我用了:
$scope.params["status[]"] = ['OPEN','HELD'];
Run Code Online (Sandbox Code Playgroud)
这允许我根据需要检索服务器上的值.
| 归档时间: |
|
| 查看次数: |
6077 次 |
| 最近记录: |