php輸出json資料,導致前端js判斷錯誤的分析及解決

挪挪訂貨發表於2022-04-01

在前端渲染的時候出現錯誤,導致糾結了一天時間。最後還是在 就眠儀式 的幫助下排除了錯誤。

下面是錯誤原因及排除

  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部落格 ” ,連結:http://blog.itpub.net/69992267/viewspace-2885306/,如需轉載,請註明出處,否則將追究法律責任。

相關文章