如何从angularjs http回调中查看json数据?

时间:2015-05-28 11:38:28

标签: javascript json angularjs

我可以在控制台中看到我的json数据,我想在click按钮功能之后在html页面上查看它。根据我的不足,我可以做一个承诺($ q),或者然后使用http或ngResource。首先我想做http然后迁移到ngResource。由于某种原因,我的范围仍未定义。也许这是一个ng-init或ng-repeat我不见了?有什么想法吗?

  var app = angular.module('myApp', []);

  app.factory('httpq', function($http, $q) {
  return {
    get: function() {
      var deferred = $q.defer();
      $http.get.apply(null, arguments)
      .success(deferred.resolve)
      .error(deferred.resolve);
      return deferred.promise;
    }
  }
});

  app.controller('myController', function($scope, httpq) {

  httpq.get('http://localhost:8080/states')
  .then(function(data) {
    $scope.returnedData = data;
  })

  $scope.clickButton = function() {
      $scope.returnedData;
}

});

查看

   <div data-ng-controller="myController">
        <button data-ng-click="clickButton()">Get Data From Server</button>
        <p>JSON Data : {{returnedData}}</p> 

    </div>

4 个答案:

答案 0 :(得分:2)

  

使用Ajax调用

<强>服务

var demoService = angular.module('demoService', [])
.service('myService',['$http', function($http) {

    this.getdata = function(entity){
        var promise = $http({
            method : 'POST',
            url : 'services/entity/add',
            data : entity,
            headers : {
                'Content-Type' : 'application/json'
            },
            cache : false
        }).then(function (response) {
            return response;
        });
        return promise;     
    };
}]);

控制器:

var demoService = angular.module('demoService', [])
.controller('myctr',['$scope','myService',function($scope,myService){
   myService.getdata().then(function(response){
            //Success

        },function(response){

            //Error         
        });

}]);

现在您可以在控制器成功

中看到您的json

答案 1 :(得分:1)

$ http本身是一个承诺,不需要创建新的承诺。只需返回$ http.get wihoit写入那里的成功,并在控制器本身中找到成功的fn。所以你的代码看起来像这样:

app.factory('httpq', function($http) {
   return {
       get: function() {
          return $http.get.apply(null, arguments);
       }
   }
});

你的控制器:

app.controller('myController',  function($scope, httpq) {
      httpq.get('http://localhost:8080/states').then(function(data) {
   $scope.returnedData = data;
 })

  $scope.clickButton = function() {
      $scope.returnedData;
  }

 });

答案 2 :(得分:0)

使用

$scope.returnedData=JSON.parse(data);

它将以JSON格式提供值

答案 3 :(得分:0)

我没有使用 promise 。但是你的工厂代码似乎没问题。

在控制器中首先声明你的对象。

如果只是对象将其声明为

$scope.returnedData = {};

如果是数组,请将其声明为

$scope.returnedData = [];

对象不会被定义,更改将影响HTML