AngularJS:操作`query`的资源配置出错。包含一个对象但得到一个数组的预期响应

时间:2014-11-30 03:56:28

标签: javascript angularjs web-services rest azure

我正在尝试使用Angular 1.3调用REST服务,但不断收到“错误:错误:badcfg 响应与配置的参数“。

不匹配

我怀疑它在我的控制器中,我调用$ scope.data。我相信.data是正确的但却抛出了这个错误。

这是我的服务,包括测试REST调用:

var pfcServices = angular.module('pfcServices', ['ngResource'])

pfcServices.factory('pfcArticles', ['$resource',
  function($resource){
      return $resource('https://myrestcall.com/data, {}, {
          query: {method:'GET'}
      });
  }]);

这是我的控制器:

var pfcControllers = angular.module('pfcControllers', []);

pfcControllers.controller('pfcCtrl', ['$scope', 'pfcArticles', function ($scope, pfcArticles) {
    $scope.data = pfcArticles.query();
}]);

在IE中,我得到一条CORS消息:XML https://pfc.azure-mobile.net/tables/articles的XMLHttpRequest需要跨源资源共享(CORS)。这不会发生在Chrome中。

然而,我不确定这是否相关,或者只是我的一个不好的电话。我已将测试站点添加到Azure Mobile Webservices中的CORS,我将在其中托管测试REST调用。

我是Angular的新手,所以我倾向于接到一个糟糕的电话。

1 个答案:

答案 0 :(得分:3)

我不确定为什么在资源上设置query属性。删除query

的配置
return $resource('https://pfc.azure-mobile.net/tables/articles', {});

或在isArray配置中设置query为真。

return $resource('https://pfc.azure-mobile.net/tables/articles', {}, {
          query: {method:'GET',isArray:true}
      });

错误即将发生,因为Angular无法反序列化您的响应,因为它需要一个对象,但来自该调用的响应是一个数组。

$resource上的查询方法已设置此标志,但由于您正在重新定义查询配置,因此发生此错误。请检查$resource documentation