更新:2015 年 2 月 12 日
如评论中所述,这是 Angular 模块修改对象的问题。我能够使用 toJSON
来追踪这一点,如下所述。
我最近遇到一个问题,一直很困惑。我有一项服务是通过 get
请求从 api 请求数据。在 Chrome 开发者工具中查看网络面板时,api 会返回正确的结果,但它们不会显示在 Angular 请求的响应中。
您可以注意到内容部分缺少项目。和 Angular 代码:
Angular 代码
function getPhotos(){
return $http.get('/photo')
.then(getPhotosComplete)
.catch(function(err){
//handle errors
});
function getPhotosComplete(res){
//Showing incorrect response here
console.log("getPhotosComplete", res);
return res.data;
}
}
来自 API
{
网址:“https://dev.amazonaws.com/060a2a5f-8bb7-4ffa-aa7d-e715439271a3.jpg”,
存档名称:“140809”,
种子数:0,
观看次数:0,
直播:真实,
当前:错误,
下一个:假的,
创建于:“2015-02-10T17:48:41.505Z”,
更新时间:“2015-02-12T04:11:02.239Z”,
内容: [
“气球”,
“公寓”,
“测试”,
“测试 2”,
“派对”,
“伊内兹”
],
ID:“54da44790eb10b0f00b453a1”
}
Angular Scope/res.data in service
{
网址:“https://dev.amazonaws.com/060a2a5f-8bb7-4ffa-aa7d-e715439271a3.jpg”,种子数:0,
观看次数:0,
直播:真实,
当前:错误,
下一个:假的,
创建于:“2015-02-10T17:48:41.505Z”,
更新时间:“2015-02-12T04:11:02.239Z”,
内容:数组[3]
0:“气球”,
1:“公寓”,
2:“派对”
]
最佳答案
如果 angular.toJson()
的输出是正确的,但是对象的 console.log
是错误的,那么它强烈表明对象正在被修改调用 console.log
后某处的代码。
这是因为 console.log
引用了一个对象,一段时间后它把它变成一个字符串输出。我将其归类为轻微的邪恶行为,因为它表明错误发生在调用 console.log
之前,而实际上是在它之后的问题。查看错误的代码可能会浪费时间...
关于javascript - Angular promise 从 JSON API 返回不正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469279/