2013-07-09 144 views
1

我是AngularJS的新手。我有一个.net MVC WebAPI Restful应用程序运行在IIS服务器上。当我查询的API与http://xxx.xxx.xxx.xxx/api/project我得到:AngularJS不工作

[{"Id":1,"Name":"Glenn Block","Created":"0001-01-01T00:00:00"},{"Id":2,"Name":"Dan Roth","Created":"0001-01-01T00:00:00"}] 

我创建了一个ProjectCtrl(在一个单独的空项目),看起来像这样:

angular.module('Project', ['ngResource']); 

function ProjectCtrl($scope, $resource) { 
    $scope.project = $resource('http://192.168.1.221/api/project' 
    ); 
    $scope.project.get(function (data) { 
     console.log('success, got data: ', data); 
    }, function (err) { 
     alert('request failed'); 
    }); 
} 

我总是失败。我解决的服务器上CORS问题和请求头中包含

Access-Control-Request-He... x-requested-with 
Access-Control-Request-Me... GET 

我感到奇怪的是,当我看着萤火虫它不会做一个GET而是显示的状态为选择项目200

我不知道我错过了什么。

+1

get中的第一个参数是否需要是空的{}对象?如果是这样,你(回调)'回调实际上是你返回的数据。只是一个猜测。 – rGil

+0

我只是试过这个,没有改变。然而,我做到了,将这些行添加到ProjectCtrl的顶部... var myApp = angular.module('Project',['ngResource']); myApp.config([ '$ httpProvider',函数($ httpProvider){ $ httpProvider.defaults.useXDomain = TRUE; 删除$ httpProvider.defaults.headers.common [ 'X-请求-随着']; }]); ,它现在得到了,我看到的数据。我在控制台出现错误 - 错误:a.push不是函数 – Jeff

+0

Bummer,如果错误,我会删除答案。不希望这个问题得不到解决。 – rGil

回答

1

您的评论中提到的错误“错误:a.push不是函数”是因为您的响应是一个数组。使用$resource时,当您的响应是一个数组时,请使用query函数。

+0

谢谢,这使得err消失。 – Jeff

0

我认为资源调用的第一个参数应该是基于资源的参数。如果你没有,传递一个空对象{}作为第一个参数:

$scope.project.get({},function (data) { 
    console.log('success, got data: ', data); 
}, function (err) { 
    alert('request failed'); 
}); 

我的猜测是,你err对象实际上是成功返回的数据。如果我错了,告诉我,我会删除!