我需要调用一个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
如何正确传递所需的参数?
答案 0 :(得分:1)
添加到ricick的答案,您还可以以
格式传递IDhttp://service_addr?itemIDs=34,36,38
做
ids.join(',')
答案 1 :(得分:0)
问题是你在GET中不能有多个具有相同名称的参数,所以即使angular可以传递数据,你的服务器也只会看到一个值(除非你是在欺骗并手动删除url字符串)
更好的解决方案是:
http://service_addr?itemID0=34&itemID1=36itemID1=38&itemIDCount=3
这样就可以为每个变量创建一个单独的参数。