如何定义Angular $资源以正确传递参数

时间:2013-10-29 22:53:33

标签: angularjs

我需要调用一个Web服务,该服务需要表单中的ID列表:

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请求错误。请求在参数中格式不正确,如下所示:

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

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

2 个答案:

答案 0 :(得分:1)

添加到ricick的答案,您还可以以

格式传递ID
http://service_addr?itemIDs=34,36,38

ids.join(',')

答案 1 :(得分:0)

问题是你在GET中不能有多个具有相同名称的参数,所以即使angular可以传递数据,你的服务器也只会看到一个值(除非你是在欺骗并手动删除url字符串)

更好的解决方案是:

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

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