web页面登录后,显示登录状态undefined 空指针解决,debug了好久

版权声明:本站所提供的文章资讯、软件资源、素材源码等内容均为本作者提供、网友推荐、互联网整理而来(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考,如有侵犯您的版权,请联系我,本作者将在三个工作日内改正。 https://blog.csdn.net/weixin_42323802/article/details/83065349

这是一个令人悲伤的故事:

ajax 的  dataType:"json",   写成了data :“json”,  尼玛  在前端页面打断点截图如下;

 改正过后可以获取json中的数据了;没有修改bug之前,res={a: "lisi" }  浏览器在解析 json时候已字符串格式解析了,造成影响判断的假象;数据显示 undefined  ;

session会话中json 数据传递什么都没问题,奇了怪了,最后看出了dataType  出错,哎;

成功状态如下  ,动态显示了:    欢迎回来,用户名: 


逻辑是这样的:

登录提交表单,登陆成功就在session中储存用户信息【session关闭浏览器失效】;ajax动态获取session中储存的phoneNumber,password ;并通过数据库获取用户名在显示用户其登录的状态; 

显示状态的servlet 如下;

   /**
     * 显示用户的状态
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void showUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //login  时候 request.getSession().setAttribute("list", list);    保存在session中  应该在正确信息进行保存
        HashMap<String, String>  map = new HashMap<>();
        List<User> list = (List<User>) request.getSession().getAttribute("list");
        //对list  进行判断
        String json = "";
        if (list.size() == 0) {   //未登录状态
             map.put("a", "no");   //todo   不能赋值给json

        } else {
            map.put("a", list.get(0).getUsername());
        }
        json = JSON.toJSONString(map);
        response.getWriter().write(json);
    }

header.html  头部拼接页面;

<!-- 头部 start -->
    <header id="header">
        <div class="top_banner">
            <img src="images/top_banner.jpg" alt="">
        </div>
        <div class="shortcut">
            <!-- 未登录状态  -->
            <div class="login_out">
                <a href="login.html">登录</a>
                <a href="register.html">注册</a>
            </div>
            <!-- 登录状态  -->
            <div class="login">
            	
                <span id="loginUsernameSpan" ></span>  <!-- 给一个id 然后修改span      -->
                <a href="myfavorite.html" class="collection">我的收藏</a>
                <a href="javascript:;">退出</a>
            </div>
        </div>
        <div class="header_wrap">
            <div class="topbar">
                <div class="logo">
                    <a href="/"><img src="images/logo.jpg" alt=""></a>
                </div>
                <div class="search">
                    <input name="" type="text" placeholder="请输入路线名称" class="search_input" autocomplete="off">
                    <a href="javascript:;" class="search-button">搜索</a>
                </div>
                <div class="hottel">
                    <div class="hot_pic">
                        <img src="images/hot_tel.jpg" alt="">
                    </div>
                    <div class="hot_tel">
                        <p class="hot_time">客服热线(9:00-6:00)</p>
                        <p class="hot_num">400-618-9090</p>
                    </div>
                </div>
            </div>
        </div>
        <script src="js/jquery-3.3.1.js"></script>
        <script type="text/javascript">
            $(function () {
                $.ajax({
                    url:"userServlet?methodName=showUser",
                    dataType:"json",
                    success:function (res){
                        if (res.a == "no") {
                            $(".login").hide();
                        }else {
                            $(".login_out").hide();
                            $("#loginUsernameSpan").html("欢迎回来,"+res.a);
                        }
                    }
                });
            });
        </script>

    </header>
    <!-- 头部 end -->

    

猜你喜欢

转载自blog.csdn.net/weixin_42323802/article/details/83065349
今日推荐