【问题标题】:$http.get() returns blank data in AngularJS from external source$http.get() 从外部源返回 AngularJS 中的空白数据
【发布时间】:2014-02-25 09:31:49
【问题描述】:

我尝试通过 $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 也会继续渲染谷歌地图。

【问题讨论】:

    标签: json angularjs http


    【解决方案1】:

    问题是外部服务器不允许您请求数据。 有一个完整的标准来塑造它。

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

    http://enable-cors.org/

    【讨论】:

      【解决方案2】:

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

      Jsonp 就是你所需要的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-12
        • 2016-07-09
        • 2015-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多