ITPub博客

首页 > IT职业 > IT职场 > php输出json数据,导致前端js判断错误的分析及解决

php输出json数据,导致前端js判断错误的分析及解决

原创 IT职场 作者:挪挪订货 时间:2022-04-01 09:42:13 0 删除 编辑

在前端渲染的时候出现错误,导致纠结了一天时间。最后还是在 就眠仪式 的帮助下排除了错误。

下面是错误原因及排除

  1. 在index.html中,原pear.config.json中关于默认样式的代码如下

"theme": {
   "defaultColor": "2",
   "defaultMenu": "dark-theme",
   "allowCustom": true
},
"colors": [{
      "id": "1",
      "color": "#FF5722"
   },
   {
      "id": "2",
      "color": "#5FB878"
   },
   {
      "id": "3",
      "color": "#1E9FFF"
   }, {
      "id": "4",
      "color": "#FFB800"
   }, {
      "id": "5",
      "color": "darkgray"
   }
],

而我的PHP输出代码是

$data['theme']['defaultColor']='2';
$data['theme']['defaultMenu']="dark-theme";
$data['theme']['allowCustom']=true;
$data['colors'][0]=array('id'=>1,'color'=>"#FF5722");
$data['colors'][1]=array('id'=>2,'color'=>"#5FB878");
$data['colors'][2]=array('id'=>3,'color'=>"#1E9FFF");
$data['colors'][3]=array('id'=>4,'color'=>"#FFB800");
$data['colors'][4]=array('id'=>5,'color'=>"darkgray");

上面是原来输出json的代码

二者对比如下:

image.png


经过 就眠仪式 的分析发现 colors 的差异(第28行开始),我输出的json中colors元素中的id是数字(number),而原来json中colors元素中的id是字符(string)

在admin.js中364的getColorById(id)函数中,使用的是===,因为value.id和id类型不一样,所以没有符合条件的数据赋值给color,从而导致color变成  undefined

image.png


解决办法:将php代码中的

$data['colors'][0]=array('id'=>1,'color'=>"#FF5722");

修改为

$data['colors'][0]=array('id'=>'1','color'=>"#FF5722");

(将id的值有数字改为字符)


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69992267/viewspace-2885306/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-12-30

  • 博文量
    8
  • 访问量
    5179