我使用Angular $资源向我的控制器发出请求,在Spring应用程序上实现。 当控制器只返回一个Integer值时,$ resource会解析它。 使用Firebug进行检查我得到的结果如下:
Resource { 0="1", 1="9", 2="1", more...}
其中191只是服务器返回的intger值。 其他复杂对象没有问题(由服务器在JSON中解析)。 建议? 谢谢 FB
答案 0 :(得分:4)
我知道这有点旧,但我遇到了类似的问题,有人指出了我正确的方向。
如果你的服务器正在发送一个JSON编码的共鸣,但你只传递一个值(在你的情况下是191),$ resource似乎将它解释为一个字符串,然后它将分成一个单独的字符数组(我不是100%关于原因的技术细节,但这是我的经验)。所以你需要做的是将你的值包装回JSON对象中。
所以,不要做类似的事情:
function callback(req, res) {
var number = 191; // this is just for example purposes
res.json(number);
}
您需要执行以下操作:
function callback(req, res) {
var number = 191; // again, just for an example
res.json({ value: number });
}
然后当您的$ resource调用回来时,只需访问响应的value
属性,您应该好好去。
P.S。这里的示例基于Node / Express后端,而不是Spring,但我认为这仍然适用。
答案 1 :(得分:0)
在$ resource方法定义中设置isArray: false
。
答案 2 :(得分:0)
也许尝试在动作配置中设置responseType
,如下所示:
$resource(url, {}, {
get: {
method: 'GET',
responseType: 'text'
}
});
如果这不起作用,您可能需要使用transformResponse
或$ http拦截器在资源获取之前修改响应。 See $http docs
答案 3 :(得分:0)
我实际上发现这是整数,字符串和bool的问题。
如果您使用的是WebAPI,请执行以下操作:
public object ControllerMethod(<PARAMS>)
{
<LOGIC>
return new { value = <PUT YOUR VALUE HERE> };
}
如果是Node,请使用CodeLander的回答。
在您的Angular代码中,您只需获得返回内容的.value。