Angular $资源无法正确解析整数响应

时间:2014-03-27 18:40:37

标签: angularjs angular-resource

我使用Angular $资源向我的控制器发出请求,在Spring应用程序上实现。 当控制器只返回一个Integer值时,$ resource会解析它。 使用Firebug进行检查我得到的结果如下:

Resource { 0="1", 1="9", 2="1", more...}

其中191只是服务器返回的intger值。 其他复杂对象没有问题(由服务器在JSON中解析)。 建议? 谢谢 FB

4 个答案:

答案 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。