undefined is not an object
页面报这个错,是因为后台在某个字段为空的时候,后台不是返回空而是直接不返回这个字段,以dict_data 字段为例
正常情况下后台返回{ "type":" A" ,"dict_data" :[ { "name": "1", "age": "1" }]},特殊情况当这个字段为空时,后台返回{ "type": "A"},并没有返回"dict_data":[ ]
而前端页面代码没有做 dict_data != undefined 的判断,且在for循环里引用 CnName = dict_data[k].name;这样就会导致前端页面对象使用点操作获取属性时找不到该字段,从而报“undefined is not an object”错误。
解决办法有两种,一种是当某字段为空时,后台要返回该字段,只是内容为空,而不是直接不返回该字段
第二种是前端每次在通过点获取对象属性时,都做一次该属性 != undefined的校验,并将其交易放在try{}catch(e){ alert(e) }块里,即使内部报错也不影响外面的其他代码