后端返回数组类型在前端ajax接收到的是Object类型,导致.length获取长度失败
目录
后端返回数组类型在前端ajax接收到的是Object类型,导致.length获取长度失败
问题:
后端返回数组类型在前端ajax接收到的是
Object
类型,导致.length获取长度失败。奇怪的是我本地返回类型是Array没任何问题,test环境就成
Object
了
本地环境:
test环境:
解决办法
:将
Object
转成Array
data.favorites_list = objOfValueToArr(data.favorites_list);
function objOfValueToArr(object) {
if(!isArrayFn(object)){
var arr = [];
var i = 0;
for (var item in object) {
arr[i] = object[item];
i++;
}
return arr;
}else{
return object;
}
}
function isArrayFn(value){
if (typeof Array.isArray === "function") {
return Array.isArray(value);
}else{
return Object.prototype.toString.call(value) === "[object Array]";
}
}
总结 :遇到问题较长时间无解决思路时,要么清空大脑换个思路,要么就及时请教。如解决本问题时刚开时就一味觉得在后台数据哪的格式弄错了,一头扎进后端代码无法自拔。