AngularJS HTTP获取回复

时间:2016-04-21 16:20:27

标签: javascript angularjs

我无法使用http.get从某些网站获取回复。我从Firebase获得的每一项工作似乎都有效,但许多其他网站却没有,尽管我的浏览器或卷曲请求工作正常。我有两个URL提供完全相同的数据,一个来自Firebase,另一个来自Cloud9项目。 Firebase可以使用,而c9可以使用。

当它不起作用时,我得到以下回复:

{"data":null,"status":-1,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"url":"http://dl-celeb-dp-x2jroy.c9users.io:8081/getScoreboard","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":""}

我已尝试使用HTTP以及HTTPS,因为无法正常工作,但无论如何都会得到相同的响应。

我有一个小提琴来证明: https://jsfiddle.net/9d7mysns/

HTML:      

<h1>{{result}}</h1>
<p>{{content}}</p>

</div>

使用Javascript:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
$http.get("https://blazing-torch-1276.firebaseio.com/getScoreboard.json") //Working
//$http.get("https://dl-celeb-dp-x2jroy.c9users.io:8081/getScoreboard") //Not Working
  .then(function(response) {
      $scope.result = "Success";
      $scope.content = response;
  }, function(response) {
      $scope.result = "Error";
      $scope.content = response;
  });
});

请帮忙, 谢谢!

2 个答案:

答案 0 :(得分:5)

我认为第二个不允许Cross-Domain request。这就是我在Chrome控制台中看到的小提琴。

  

XMLHttpRequest无法加载https://dl-celeb-dp-x2jroy.c9users.io:8081/getScoreboard。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“https://fiddle.jshell.net”访问。

答案 1 :(得分:0)

试试这个:

var app = angular.module('myApp', []);
app.controller('myCtrl',['$scope', '$http', function($scope, $http) {
  //$http.get("https://blazing-torch-1276.firebaseio.com/getScoreboard.json") //Working
  $http.get('https://dl-celeb-dp-x2jroy.c9users.io:8081/getScoreboard',{
     header : {'Content-Type' : 'application/json; charset=UTF-8'}
  }) //Now Working
  .success(function(response) {
    $scope.result = "Success";
    $scope.content = response;
  }).error(function(response) {
    $scope.result = "Error";
    $scope.content = response;
  });
}]);