没人遇到过第一次点击开始秒杀,显示不出秒杀成功吗?xhr.send( options.hasContent && options.data || null );这一行js代码报错,状态码是500
更正一下,是405,get请求不支持错误
已解决,原因是我的successkilled的mapper文件里面的关联查询用到了懒加载,只需要将fetchtype=“lazy”改为fetchtype=“eager”即可。
情况1:如果你是第一次往cookie里面写手机号,然后点击开始秒杀按钮,结果就是页面上没有任何变化既不会提示成功也不会提示失败,按下f12进行网络追踪,会发现响应状态码是500,当我们点击那个报错信息后又会弹出一个404的错误,此时去后台看日志输出,提醒我们说request not supported,打开数据库,这一次秒杀是被执行了的,此时再次刷新秒杀详情页,再次点击开始秒杀按钮,能够正常更新按钮里面的内容,此时提醒我们为重复秒杀。证明我们第一次秒杀成功后的结果没能顺利返回前端,这就为json转换问题的定位提供了依据;
情况2:如果cookie里面已经注册过手机号,选择一个之前没有秒杀过的商品进行秒杀,此时点击秒杀按钮,同样没有任何页面刷新及提示,按下f12追踪网络,发现响应状态码依然是500,但此时点击进去会有详细的异常信息日志,按照这个日志提示,最终找到问题的根源所在,那就是SuccessKilled的mapper文件里面在做关联查询时用到懒加载,这就导致在json在不到达前端时其中的一些属性只要使用它是不会帮我们映射进对象里的,所以此时json中的一些属性就为空,未能完成json的序列化,因此将这样的json对象返回前台页面时就会造成前端页面无法解析。