我正在尝试使用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。 有人可以帮忙吗?
答案 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 从不为我工作,这是服务器问题。