5

我正在尝试使用 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 中不起作用。有人可以帮忙吗?

4

2 回答 2

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'];
于 2013-11-07T17:20:36.803 回答
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对我来说从来没有用过,而是服务器问题。

于 2015-07-21T11:01:59.237 回答