Ajax响应返回空值。网络响应显示了该值

时间:2014-10-24 22:56:17

标签: javascript jquery asp.net ajax angularjs

我有一个非常奇怪的问题,其中来自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里面它又是空的。

5 个答案:

答案 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})); }