0

我需要调用一个需要以下形式的 ID 列表的 Web 服务:

http://service_addr?itemID=34&itemID=36  ...

我尝试将我的服务工厂设置为:

.factory("doService", [$resource, function($resource) {
    return $resource("service_addr", {}, { 
        'create' : {method:POST, isArray:true} }); }])

在我的控制器中,我使用以下代码调用服务:

var ids = [];
angular.forEach(listofIDs, function(anId) {
    ids.push( { itemID : anID } );
}
doService.create(ids, {}, function (response) {
    ... do response stuff 
}

在控制台中,POST 返回 40 Bad request 错误。请求的参数格式不正确,如下图:

    http://service_addr?0=%5Bobject+Object%5D&1=%5Bobject+Object%5

如何正确传递所需的参数?

4

2 回答 2

1

添加到 ricick 的答案中,您还可以以格式传递 ID

http://service_addr?itemIDs=34,36,38

通过做

ids.join(',')
于 2013-10-29T23:59:38.653 回答
0

问题是您在 GET 中不能有多个具有相同名称的参数,因此即使 angular 可以传递数据,您的服务器也只会看到一个值(除非您在作弊并手动处理 url 字符串)。

更好的解决方案是:

http://service_addr?itemID0=34&itemID1=36itemID1=38&itemIDCount=3

这样您就可以为每个变量创建一个单独的参数。

于 2013-10-29T23:53:51.413 回答