好吧,我一直在抨击这个头上的血腥:
我从服务器返回以下JSON:
{
"SendDate" : "2015-03-16T22:48:27.747",
"SendTo" : {
"ContactIds" : ["28a24538-cdfc-4453-920d-86f57d7eaf22"],
"GroupIds" : []
},
"Message" : "MEETING TIME!!!!!"
}
我已经用几个REST客户端检查了这个 - 这就是回来了。
我使用$ http.get()操作让AngularJS“得到”这个,但我在“ContactIds”值上得到了一个未定义的 - 所以,我在JS控制台中看到的是:
SendDate : "2015-03-16T22:48:27.747"
SendTo:
ContactIds: Array[1]
0: undefined
length: 1
我没有想法会导致这种情况。
有什么想法吗?
更新: 我附加了一个拦截器并拦截了响应,当我将数据提供给控制台时结果是一样的 - 但是当我使用时:
JSON.stringify(数据)
我可以看到数组中的数据就在那里!
更新2:
好的,现在这让我疯了。我玩过拦截器,如果我将响应字符串化,然后使用JSON.parse() - 它工作正常,但是当我通过响应时,它再次搞砸了。
我通过angular的解析过程一直追溯到“fromJson()”函数。 (下面的代码:)它作为一个字符串进入函数。 (现在这里是Bizzarro部分)
我改变了这样的代码:
function fromJson(json) {
var obj1 = JSON.parse(json);
console.log("Obj1:");
console.log(obj1);
//my altered angular code
var obj2 = isString(json) ? JSON.parse(json) : json;
console.log("Obj2:");
console.log(obj2);
// Pass to program...
return obj1;
//return obj2;
/* original angular code:
return isString(json)
? JSON.parse(json)
: json;
*/
}
如果我运行它并返回obj1,则控制台将obj1的ContactIds“0”索引记录为“undefined” - 但是obj2记录为“28a24538-cdfc-4453-920d-86f57d7eaf22”。
“太棒了!”,我在想 - 所以我返回obj2,但现在它记录未定义但是obj1的“0”索引现在是正确的值。 (WTH?)
所以我反转代码,只是为了看,并返回obj1 - 我会被诅咒 - obj2返回“28a24538-cdfc-4453-920d-86f57d7eaf22”并且obj1未定义。 (这就像戏弄一只猴子。)
以后会在管道中做一些事情 - 或者 - 它可能与数组是GUID字符串有关 - 但我在其他地方使用GUID字符串没有问题。
它也可能是另一个我没有意识到的“角度过程”导致这种情况 - 角度非常令人印象深刻。
无论哪种方式,我都非常困惑。
这太愚蠢了 - 我很惊讶一串字符串是如此困难 - 更糟糕的是,似乎我是唯一一个遇到这个问题的人。 (我昨天研究了六个小时......)
其他任何想法,伙计们?
答案 0 :(得分:0)
我的上帝啊,我这么愚蠢!!!
首先,我要感谢大家帮助我。
答案是这样的 - 没有问题 ,也就是说,不是Angular或其解析器。
问题是控制台正在记录已转换的数据,这在MY控制器上有错误。 MY端的数据与我在控制器中的列表中的数据不匹配 - (数据库错误)。
BOTTOM LINE:
如果您弹出此错误,请不要自上而下进行故障排除 - 自下而上进行故障排除。
Angular有许多检查和平衡 - 如果你没有得到"出血失败"在整个程序中,错误可能在您的代码中。
谢谢大家的帮助。