问题:后端返回数组类型在前端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]";
   }
}

总结:遇到问题较长时间无解决思路时,要么清空大脑换个思路,要么就及时请教。如解决本问题时刚开时就一味觉得在后台数据哪的格式弄错了,一头扎进后端代码无法自拔。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐