摘要:本文主要来讲讲vue中出现最多的"undefined"错误。
1.问题描述:
当数据库存储的字段值为null时,前端请求后响应回来的数据值为undefined,如:报“level is undefined”的错误。
2.原因:
这是JSON中的.toJSONString()默认忽略值为null的属性导致的。在Servlet中,我们常常需要将java的实体对象转换成Json字符串进行响应数据。在fastJson中使用其静态方法toJSONString()就可以实现java实体对象转换为Json字符串。但是如果我们详细地了解这个toJSONString()方法的话,我们就回发现,当使用JOSN把实体对象转换成Json形式的字符串时,如果实体对象中有些属性的值为null(很大的可能是数据库中存储的值是NULL),则默认转换为Json字符串中是忽略这些值为null的属性的,导致响应回来得到的js对象是无该属性,通过对象.属性的方式获取到的值为undefined。
3.解决办法:
1)可以转换为Json字符串保留这些值为null的属性。(我尝试过了,并没有成功)
2)定义一个临时变量进行接收,同时,为了防止undefined的发生,我们需要最先进行对该变量进行是否为undefined的判断。(如:在下图中,我先定义的变量u进行接收res.data(响应回来的数据),在分支中,也最新对"u == undefined"进行最先的判断。(亲测有效)