我正在使用Angular $資源向我的控制器發出請求,並在Spring應用程序上實現。 當控制器返回一個Integer值時,$ resource解析它不好。 使用Firebug檢查它,我得到的東西,如:
Resource { 0="1", 1="9", 2="1", more...}
,其中191只是intger值服務器返回。 其他複雜對象沒有問題(由服務器在JSON中解析)。 建議? 謝謝 FB
我正在使用Angular $資源向我的控制器發出請求,並在Spring應用程序上實現。 當控制器返回一個Integer值時,$ resource解析它不好。 使用Firebug檢查它,我得到的東西,如:
Resource { 0="1", 1="9", 2="1", more...}
,其中191只是intger值服務器返回。 其他複雜對象沒有問題(由服務器在JSON中解析)。 建議? 謝謝 FB
在$ resource方法定義中設置isArray: false
。
也許嘗試在動作的配置設置responseType
,就像這樣:
$resource(url, {}, {
get: {
method: 'GET',
responseType: 'text'
}
});
如果不工作,你可能需要使用transformResponse
或$ HTTP攔截的資源得到了之前修改響應持有它。 See $http docs。
我知道這有點舊,但我遇到了類似的問題,有人指出我在正確的方向。
如果你的服務器發回一個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 });
}
那麼當你$資源調用回來,只是獲得響應的value
財產你應該很好走。
P.S.這裏的示例基於Node/Express後端,而不是Spring,但我認爲這仍然適用。
這實際上解決了我的問題,我提供res.json與JSON對象而不是JSON對象的字符串。 –
我實際上發現這是整數,字符串和布爾值的問題。
如果您正在使用的WebAPI,做這樣的:
public object ControllerMethod(<PARAMS>)
{
<LOGIC>
return new { value = <PUT YOUR VALUE HERE> };
}
如果節點上,使用CodeLander的答案。
在你的Angular代碼中,你只需要得到返回值的.value。
這不起作用。 – ach