Angular获取显示为空的JSON文件

时间:2014-04-17 14:22:22

标签: json angularjs http get angularjs-scope

我是角色的新手,并尝试将其集成到我的应用程序中。我试图使用简单的$http.get到.JSON文件,这似乎是找到的,但是当试图将数据传递到前端,甚至提醒它时,它是否警告为[]

我的到达:

$scope.countries = [];
    $http.get('/resources/data/countries-report.json', function(data){
            $scope.countries = data;
        }, function(error) {
            //handle error here
    });

    alert(JSON.stringify($scope.countries));

这是我的.JSON文件:

{
  "firstName"   : "Joe",
  "surName" : "Bloggs",
  "countries" : [
      { "name": "France", "population": "63.1" },
      { "name": "Span", "population": "52.3" },
      { "name": "United Kingdom", "population": "61.8" }
  ]
}

3 个答案:

答案 0 :(得分:2)

试试这个:

$scope.countries = [];
$http.get('/resources/data/countries-report.json', function(data){
        $scope.countries = data;
alert(JSON.stringify($scope.countries));
    }, function(error) {
        //handle error here
});

警报应该进入回调。

答案 1 :(得分:2)

这应该这样做

$http.get('/resources/data/countries-report.json').success(function(data) {
    $scope.countries = data;
    alert(JSON.stringify($scope.countries));
  }).error(function(error) {
    alert('error');
  });

此等效项也可以使用

$http.get('/resources/data/countries-report.json').then(function(data) {
    $scope.countries = data;
    alert(JSON.stringify($scope.countries));
  }, function(error) {
    alert('error');
  });

编辑 -

  1. 而不是$ http.get(' / someUrl',sucessCallback,errorCallback)它应该是

    $http.get('/someUrl').success(successCallback).error(errorCallback) 
    

    $http.get('/someUrl').then(successCallback, errorCallback) 
    

    see docs

  2. 因为$ http.get是异步警报应该在successCallback函数中移动,以确保在调用alert之前执行$scope.countries=data

答案 2 :(得分:1)

$ http.get是一个异步函数。当你尝试alert(JSON.stringify($scope.countries));时,scope.countries等于[]。在使用数据之前,您必须等待服务器响应。

尝试对成功功能发出警报

$scope.countries = [];
$http.get('/resources/data/countries-report.json', function(data){
        $scope.countries = data;
        alert(JSON.stringify($scope.countries));
    }, function(error) {
        //handle error here
});