我通过网络服务获取json数据
myService.getData()
.then(function(data, status, headers, config){
alert(data.length);
}...
即使我能够获取数据并通过代码中的浏览器控制台进行检查
在then
块中,我将数据视为未定义。
我在这里做错了什么?
更新: 我的服务电话看起来像这样
return $http.post("http:/...", {
headers: {'Authorization': 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==' }
}).success(function(data, status, headers, config){
return data;
}).error(function(data, status, headers, config){
alert('err');
});
答案 0 :(得分:0)
您传递给resolve的数据是一个对象,而不是一个数组。
对象没有length属性,在对象上调用length会给你undefined,除非你为它指定了一个length属性。
var arrayLike = ['a', 'b']
console.log(arrayLike.length)
//outputs: 2
var objectLike = { "a": 1, "b": 2 }
console.log(objectLike.length)
// outputs: undefined (no length property on the object, only a and b.
答案 1 :(得分:0)
唯一想到的是'数据'对象是一个没有长度的对象。如果它应该是字符串或数组,那么它可能是具有字符串或数组属性的对象。调试时检查您感兴趣的数据在哪里,并在使用length属性之前获取它。
示例:
data.myProperty.length
答案 2 :(得分:0)
请改为:
myService.getData()
.success(function(data, status, headers, config){
alert(data.length);
}).error(function(data, status, headers, config){
alert('err');
})...
这是您的服务:
return $http.post("http:/...", {
headers: {'Authorization': 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==' }
});
您需要返回$ http.post()
所做的承诺