AngularJS:$ HTTP.GET正在取消

时间:2013-04-18 14:27:57

标签: angularjs http-headers

我正在尝试使用angularJS的$ http服务但它似乎不起作用。我已经在线阅读了这样一个问题但是给出的解决方案没有帮助。我的控制器中有以下内容:

app.controller('Ctrl', function($scope, $http){    
    var url = http://someurl?name=foo;
    $scope.submitRules = function(){
        $http({method: 'GET', url: url}).
              success(function(data, status) {
                $scope.status = status;
                $scope.data = data;
              }).
              error(function(data, status) {
                $scope.data = data || "Request failed";
                $scope.status = status;
              });
    };
});

我正在使用此版本的angularJS <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.4/angular.min.js"></script>

每当我尝试发送请求时,都会显示请求状态为已取消。我发送请求的URL非常好用,它只是不起作用于angularJS。 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

我发现所有这些CORS的东西令人困惑。但是我能说什么呢?我是一个慢学习者。您描述的问题可以通过控制器修复,但我认为最好在入口处进行设置。例如:

angular.module('myApp', ['ngResource', 'ui.bootstrap']).
    config(function($httpProvider) {

        // Enable CORS
        $httpProvider.defaults.useXDomain = true;
        delete $httpProvider.defaults.headers.common['X-Requested-With'];

        ...
  });

鉴于您提供的代码,这可能也有效(未经测试):

app.controller('Ctrl', function($scope, $http, $httpProvider){    
    var url = http://someurl?name=foo;
    $scope.submitRules = function(){

        // Enable CORS
        $httpProvider.defaults.useXDomain = true;
        delete $httpProvider.defaults.headers.common['X-Requested-With'];

        $http({method: 'GET', url: url}).
              success(function(data, status) {
                $scope.status = status;
                $scope.data = data;
              }).
              error(function(data, status) {
                $scope.data = data || "Request failed";
                $scope.status = status;
              });
    };
});

无论哪种方式,所有的魔力都发生在这两行中:

$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];

答案 1 :(得分:0)

如果它不是CORS,您可以使用带有CORS扩展名的铬进行检查,请尝试设置您的请求超时:

app.controller('Ctrl', function($scope, $http){    
    var url = http://someurl?name=foo;
    $scope.submitRules = function(){
        $http({
            method: 'GET',
            url: url,
            timeout: 50000
        }).
        success(function(data, status) {
          $scope.status = status;
          $scope.data = data;
        }).
        error(function(data, status) {
          $scope.data = data || "Request failed";
          $scope.status = status;
        });
    };
});

设置$ httpProvider 从不为我工作,这是服务器问题。