$ http.get()从外部源返回AngularJS中的空白数据

时间:2014-02-25 09:31:49

标签: json angularjs http

我尝试通过$ http从Angular JS中的外部源获取数据,但它返回空白数据。当用于从本地文件获取数据时,相同的服务非常完美。

从本地来源获取数据的代码:

controllers.controller('listController', ['$scope', '$http',
  function($scope,$http) {

    var data = null;

     $http.get('js/test.json').success(function(data) {
            $scope.markers = data.hooks;

        });

          $scope.map = {
            center: {
                latitude: 45,
                longitude: -73
            },
            zoom: 2
        };

  }]);

从外部来源获取数据的代码:

  controllers.controller('listController', ['$scope', '$http',
    function($scope,$http) {

      var data = null;

       $http.get('http://115.113.151.200:8081/user/maphook/mobile/generate_list.jsp').success(function(data) {
              $scope.markers = data.hooks;          
          });

            $scope.map = {
              center: {
                  latitude: 45,
                  longitude: -73
              },
              zoom: 2
          };            
    }]);

正如您所看到的,只是url已更改,在后一种情况下,firebug恰好在控制台中显示以下内容: Image

我不确定是什么问题。我使用json数据绘制谷歌地图上的点。 test.json工作得很好。我假设它可能是外部数据源(不同于当前的域),或者Angular继续渲染谷歌地图甚至在从外部源返回数据之前。

2 个答案:

答案 0 :(得分:0)

问题是外部服务器不允许您请求数据。 整个标准形成了这一点。

http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

http://enable-cors.org/

答案 1 :(得分:0)

如果您打算使用ajax跨域来发送和接收json数据,那么您应该阅读JSONP。 angular.js支持它,你只需要找一个例子(谷歌有负载)。

Jsonp就是你所需要的。