我有一个非常奇怪的问题,其中来自ajax json响应的某个值是一个空字符串。所有其他价值都很好。
奇怪的是,当我在网络面板中查看响应时,它会显示正确的值。 当我控制台登录时,它是空的。
我真的不确定从哪里开始调试。
这是一个非常简单的ajax调用。我正在使用工厂并记录响应。
getAllActivity: function(){
return $http({
method: 'GET',
url: '/getActivity'
});
}
feedFactory.getAllActivity().success(function(response){
console.log(response);
});
日志的响应显示:
{
"__type": "ActivityService",
"activityTime": "/Date(1414189623937-0600)/",
"activityTimeString": "2014-10-24T16:27:03.9370000-06:00",
"activityType": "Appreciation",
"activityUrl": "~/Blog/August-2014/Staggering-the-Line",
"activityUser": {
"userId": 12345,
"userNickName": "Mike_Jones"
},
"itemDescription": ""
}
网络面板的响应显示:
{
"__type": "ActivityService",
"activityTime": "/Date(1414189623937-0600)/",
"activityTimeString": "2014-10-24T16:27:03.9370000-06:00",
"activityType": "Appreciation",
"activityUrl": "~/Blog/August-2014/Staggering-the-Line",
"activityUser": {
"userId": 12345,
"userNickName": "Mike_Jones"
},
"itemDescription": "test"
}
此外,它在其他activityTypes上正常工作。对象完全相同,唯一的区别是值不作为空字符串返回。
我感谢任何帮助。
感谢Michal在评论中我能够通过console.log(angular.copy(response));
然而,当我尝试使用var foo = angular.copy(response); function doWhatEva(foo);
在doWhatEva里面它又是空的。
答案 0 :(得分:2)
如评论中所述,
的输出console.log(response)
缺少值,但
的输出console.log(angular.copy(response))
缺少值。因为console.log
可以显示对象而不是在调用console.log
时,但在JS事件循环结束时,这表明该值是从服务器正确返回的,并且Angular正在解码从JSON中可以很好,但是后来在以原始问题中未包含的某些代码中更改了值。
答案 1 :(得分:0)
尝试将dataType:json
添加到您的请求中
getAllActivity: function(){
return $http({
type: "GET",
dataType: "json",
url: '/getActivity'
});
}
答案 2 :(得分:0)
看看正在做什么和返回" getActivity"应该是有用的。 url,也许itemDescription的值是出现一个奇怪的角色或什么的。
答案 3 :(得分:0)
我认为你有一个反序列化问题,因为那不是一个有效的json:
"activityUser": {
"userId": 12345,
"userNickName": "Mike_Jones",
}
"userNickName": "Mike_Jones",
还有一个逗号,你已经解决了吗?
答案 4 :(得分:0)
试试这个,应该有效:
getAllActivity: function(){
var result = $http({
method: 'GET',
url: '/getActivity'
});
return (result.then(function(r){return r.data}));
}