【发布时间】:2015-04-02 19:08:36
【问题描述】:
我正在使用 Angular HTTP 资源从 API 获取一些数据。 API 上的方法实际上是一个 PUT,但返回一个数据数组。 (注意,这不是我的 API)
它完美地执行了 HTTP 调用,我可以在 Google Developer Tools 的网络中看到我的响应是正确的。但是,在尝试使用响应数据时,我不断收到“TypeError: undefined is not a function”。
以下是我尝试过的一些不同方法,每种方法都给出相同的 TypeError:
HTTP 资源
.factory('Sports', ['$resource', 'SPORTS_CONFIG',
function($resource, SPORTS_CONFIG) {
return $resource(SPORTS_CONFIG.URL, {}, {
get: {
method: 'PUT',
isArray: true
}
});
}
])
Angular JS 尝试
// Construct Sports Body
var s = new Sports($scope.sport);
// Attempt 1
s.$get({}, function(data){
});
// Attempt 2
s.$get({}).then(function(data){
});
// Attempt 3
s.$get({}).$promise.then(data){
});
编辑
在查看了我的错误代码之后,我的 HTTP 资源中的“isArray”似乎发生了错误。当我将 isArray 设置为 false 时,它会出错,因为它需要一个对象但得到一个数组。当我保持真实时,它会出错并说 TypeError: undefined is not a function。当我单击 javascript 行时,它是“isArray”。
第二次编辑
我已经使用以下代码使其工作:
$scope.teams = Sports.get($scope.sport);
但是,$scope.teams = [0, $promise, $resolved] 。我怎样才能只得到 [0] 而不是 $promise 和 $resolved?
【问题讨论】:
-
你试过 s.$get().success(function(data, status, headers, config) { }); ?
-
我已经添加了 s 是什么、$http 资源以及对错误位置的更新。你能看看修改吗?
-
您能告诉我们,您收到的
PUT回复是什么? -
状态:200 OK 响应:[{"name": Football, "id": 2}]
-
我假设响应是 [{"name": "Football", "id": "2"}] (注意引号)。如果不是,那么响应是错误的。使用JSON Lint进行验证
标签: javascript angularjs angular-http