Peter Huang
Peter Huang

Reputation: 1178

Angular JS using $http() get a response, with status 200, but data is null

I'm using this angular code:

$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);
});

the response is like this:

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

In the console, it prints:

Success: null

how come it returns success, but data is null.

any help appreciated!

Upvotes: 3

Views: 7350

Answers (2)

Marcus Crisostomo
Marcus Crisostomo

Reputation: 148

I don't know which version of AngularJS you are using, but assuming v1.6, then try this:

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

Upvotes: 0

sbedulin
sbedulin

Reputation: 4332

This might happen because json is not formatted properly. Try:

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

and use

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

or you may use your original code but without responseType as @DeborahK figured out:

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

But anyway you would need to format your json properly, otherwise angular will raise parsing exception.

Upvotes: 3

Related Questions