使用$ http()的Angular JS获得状态为200的响应,但数据为null

时间:2015-01-09 19:46:37

标签: angularjs

我正在使用此角度代码:

$http({
  method: 'get',
  url: 'json/test.json',
  responseType: "json"
}).success(function(data, status, headers, config) {
  console.log('Success: ' + data);
  $scope.tests = data;
}).error(function(data, status, headers, config) {
  console.log('Error: ' + data);
});

响应是这样的:

[{
  id: 1,
  name: 'aaaa',
  age: 20
}, {
  id: 2,
  name: 'bbbbb',
  age: 21
}]

在控制台中,它会打印:

Success: null

如何返回成功,但数据为空。

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

可能会发生这种情况,因为json格式不正确。尝试:

[
    {
        "id": 1,
        "name": "aaaa",
        "age": 20
    },
    {
        "id": 2,
        "name": "bbbbb",
        "age": 21
    }
]

并使用

$http.get("json/test.json").success(function (data) {
    console.log('success: ' + data)
});

或者你可以使用原始代码,但没有responseType,因为@DeborahK想出了:

$http({
  method: 'get',
  url: 'json/test.json'
}).success(function(data, status, headers, config) {
  console.log('Success: ' + data);
})

但是无论如何你需要正确格式化json,否则angular会引发解析异常。

答案 1 :(得分:0)

我不知道你正在使用哪个版本的AngularJS,但假设是v1.6,那么试试这个:

$http.get("json/test.json").then(function(response) {
    console.log('success: ' + response.data);
}).catch(function(response) {
    console.log('error: ' + response.data);
});