前端后台分开之删除和修改三级列表

删除

1.list页面中点击删除后调用url接口

1.1生成列表中的删除按钮

str+=" 删除|";

1.2按钮点击事件,携带id发送到url接口


    function fbtn(id,name){
            
        if( !confirm("确定要真的删除【"+name+"】 吗?")) return;
        
        $.ajax({
            "url": "<%=path%>/svlt/pingtai/kindthdbbb/deleteThird",
            "type":"get",
            "data":{"xxx":id},
            "success":function(dt){
                //alert(dt);
                dt = eval( "("+dt+")" );
                if( dt.success == 0 ){
                    location.href="<%=path%>/pingtai/kind/kindThirdB_list.jsp";
                }else{
                    alert('此项操作失败.请联系');
                }
            }
        });
        
    }//fbtn()

1.3Servlet中url接口路径

@WebServlet("/svlt/pingtai/kindthdbbb/*")

1.4执行delete方法



    /**
     * 测试url:   /svlt/pingtai/kindthdbbb/deleteThird
     * 删除一个三级分类
     * @param   参数xxx
     * @return
     *          正确:{"success":0}
     *          
     *          错误:{"success":-1} 
     */
    private void delete(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        
        String p0 = req.getParameter("xxx");
        System.out.println(this.getClass().getName()+"日志1..\t:要删除的id  "+p0);
        
        System.out.println(this.getClass().getName()+"日志2...使用Manager删除");
    
        StringBuffer bf = new StringBuffer();
        bf.append("{"); 
        try{
            thdMng.deleteThird( Integer.parseInt(p0) );
            bf.append("     'success':0,"); 
        }catch (Exception e) {
            e.printStackTrace();
            bf.append("     'success':-1,");
        }
        bf.append("}");
        
        System.out.println(this.getClass().getName()+"日志3...返回json");
        resp.getWriter().print(  bf.toString() );//加入EncodingFilter少写两句代码
        
    }//delete()

1.5在浏览器里测试接口

001.PNG

1.6编写接口文档(简单版)

002.PNG

1.7成功后在ajax中接收json并跳转到list页面


    //删除
    function fbtn(id,name){
    
        if( !confirm("确定要真的删除【"+name+"】 吗?")) return;
        
        $.ajax({
            "url": "<%=path%>/svlt/pingtai/kindthdbbb/deleteThird",
            "type":"get",
            "data":{"xxx":id},
            "success":function(dt){
                //alert(dt);
                dt = eval( "("+dt+")" );
                if( dt.success == 0 ){
                    location.href="<%=path%>/pingtai/kind/kindThirdB_list.jsp";
                }else{
                    alert('此项操作失败.请联系');
                }
            }
        });
        
    }//fbtn()

2.修改三级分类

2.1在list的修改链接点击事件

str+=" 修改";
触发的方法有两个参数id和name


    //修改
    function fupd(id,name){
        if( !confirm("确定要修改【"+name+"】 吗?")) return;
        location.href="<%=path %>/pingtai/kind/kindThirdB_upd.jsp?xxx="+id;
    }

2.2 upd.jsp使用ajax发送请求,返回所有的一级分类集合


    $(function(){
        //加载一级分类列表
        $.ajax({
            "url":"<%=path%>/svlt/pingtai/kindthdbbb/findFirst",
            "type":"get",
            "async":"false",
            "success":function(dt){
                alert(dt);
                var dt  = eval("("+dt+")");
                //alert(dt.success==0);
                if( dt.success==0){ //接收到json数据成功
                    $.each(dt.data,function(i,n){
                        var str = "";
                        $("#upid").append(str);                     
                    })//each
                }
            }
        });

2.3 找到对应的getFirst方法,注意接口文档的书写

此处getUpid为int类型,String类型需要加上''
注意测试接口是否能拿到值


    /**
     * 测试url:   /svlt/pingtai/kindthdbbb/findFirst
     * 
     * 返回:  真确:{
     *              "success":0
     *              "data":[
     *                  {"tid":"a01",'tname':'脱水蛋糕','timg':'aa.png','upid':'aa','upname':'蛋糕/甜点'},
     *                  {"tid":"a02",'tname':'软蛋糕','timg':'a02.png','upid':'aa','upname':'蛋糕/甜点'},
     *                  {"tid":"a03",'tname':'硬蛋糕','timg':'a03.png','upid':'aa','upname':'蛋糕/甜点'},
     *              ]
     *          }
     *          
     *      错误:{"success":-1}
     */
    private void getFirst(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println(this.getServletName()+"日志1...查询一级分类集合");
        List klist = fmng.findKindfirst();
        
        System.out.println(this.getServletName()+"日志2...转成json格式");
        StringBuffer bf = new StringBuffer();
        bf.append("{");
        if(klist!=null && klist.size()>0){
            bf.append("     'success':0,");
            bf.append("     'data':[");
            
            for (Kind k : klist) {
                bf.append("{"); 
                bf.append("     'kid':"+k.getKid()+",");
                bf.append("     'kindName':'"+k.getKindName()+"',");
                bf.append("     'kindImg':'"+k.getKindImg()+"',");
                bf.append("     'upid':"+k.getUpid()+",");
                bf.append(" },");       
            }
            
            bf.append("         ]");
        }else{
            bf.append("     'success':-1,");
        }
        bf.append("}");
        System.out.println(this.getServletName()+"日志3...输出 json:" + bf.toString());
        resp.getWriter().print( bf.toString() );
    }//getFirst()

2.4 Ajax把数据转为JSON格式加入到下拉列表中


    success":function(dt){
        alert(dt);
        var dt  = eval("("+dt+")");
        //alert(dt.success==0);
        if( dt.success==0){ //接收到json数据成功
            $.each(dt.data,function(i,n){
                var str = "";
                $("#upid").append(str);                     
            })//each
        }

2.5 使用Ajax发送请求,返回要修改的三级分类的上级兄弟分离集合/svlt/pingtai/kindthdbbb/findParentList


    $.ajax({
        "url":"<%=path%>/svlt/pingtai/kindthdbbb/findParentList",
        "type":"get",
        "data":{"tid": ${param.xxx} },
        "async":"false",
        "success":function(dt){
            alert(dt);
            dt  = eval("("+dt+")");
            //alert(dt.success==0);
            if( dt.success==0){ //接收到json数据成功
                $.each(dt.data,function(i,n){
                    var str = "";
                    $("#secid").append(str);                        
                })//each
            }
        }
    });

2.6 找到对应的findParent方法把数据保存为JSON格式的字符串完,成后测试url接口能否得到对应的数据



    /**
     * 测试url:   /svlt/pingtai/kindthdbbb/findParentList
     * 查询一个三级分类 和  上级对象
     * @param   参数xxx 三级分类id
     * @return  正确:{
     *                  "success":0
     *                  "third":    {"tid":"a01",'tname':'脱水蛋糕','timg':'aa.png','upid':'aa','upname':'蛋糕/甜点'}, 
     *                  "up":       {"tid":"a01",'tname':'脱水蛋糕','timg':'aa.png','upid':'aa','upname':'蛋糕/甜点'},  
     *              }
     *          
     *          错误:{"success":-1} 
     */
    private void findParent(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        
        String p0 = req.getParameter("tid");
        
        System.out.println(this.getServletName()+"日志1...C查询三级分类 的上级及其兄弟分类 集合 (定位二级)");
        List parlist = thdMng.findParentBySubId( Integer.parseInt( p0 ) );
        
        System.out.println(this.getServletName()+"日志2...返回json格式");
        
        StringBuffer bf = new StringBuffer();
        bf.append("{");
        if(parlist!=null && parlist.size()>0){
            bf.append("     'success':0,");
            bf.append("     'data':[");
            
            for (Kind k : parlist) {
                bf.append("{"); 
                bf.append("     'kid':"+k.getKid()+",");
                bf.append("     'kindName':'"+k.getKindName()+"',");
                bf.append("     'kindImg':'"+k.getKindImg()+"',");
                bf.append("     'upid':"+k.getUpid()+",");
                bf.append(" },");       
            }
            
            bf.append("         ]");
        }else{
            bf.append("     'success':-1,");
        }
        bf.append("}");
        
        resp.getWriter().print( bf.toString() );
        
    }//findParent()

2.7成功后Ajax把数据解析为JSON格式并添加到二级分类下拉列表中



    "success":function(dt){
        alert(dt);
        dt  = eval("("+dt+")");
        //alert(dt.success==0);
        if( dt.success==0){ //接收到json数据成功
            $.each(dt.data,function(i,n){
                var str = "";
                $("#secid").append(str);                        
            })//each
        }
    }

2.8 使用Ajax发送请求,返回的要修改的对象的所有信息包括上级信息


    $.ajax({
        "url":"<%=path%>/svlt/pingtai/kindthdbbb/updInfo",
        "type":"get",
        "data":{"tid": ${param.xxx} },
        "async":"false",
        "success":function(dt){
            alert(dt);
            dt  = eval("("+dt+")");
            //填写三级信息
            $("#uuvv").val( dt.third.kid);
            $("#xxyyzz").val( dt.third.kindName);
            $("#sdesc").val( dt.third.kindDesc);
            
            //定位 一级分类
            $("#upid option[value="+dt.up.upid+"]").attr("selected","selected");
            
            //定位 二级分类
            $("#secid option[value="+dt.up.kid+"]").attr("selected","selected");
        }
    });

2.9 找到对应的findThirdById方法找到所有的信息并转成JSON格式的字符串,测试url接口/svlt/pingtai/kindthdbbb/updInfo

JSON中三级分类信息和二级分类信息

    /**
     * 测试url:   /svlt/pingtai/kindthdbbb/updInfo
     * 查询一个三级分类 和  上级对象
     * @param   参数xxx 三级分类id
     * @return  正确:{
     *                  "success":0
     *                  "third":    {"tid":"a01",'tname':'脱水蛋糕','timg':'aa.png','upid':'aa','upname':'蛋糕/甜点'}, 
     *                  "up":       {"tid":"a01",'tname':'脱水蛋糕','timg':'aa.png','upid':'aa','upname':'蛋糕/甜点'},  
     *              }
     *          
     *          错误:{"success":-1} 
     */
    private void findThirdById(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        StringBuffer bf = new StringBuffer();
        try{
            String p0 = req.getParameter("tid");
            System.out.println(this.getServletName()+"日志1...接收到修改的三级分类id:"+ p0);
        
            Map kd3 = thdMng.findThirdById( Integer.parseInt( p0) ); //findById
            System.out.println(this.getServletName()+"日志2...A要修改的三级分类对象" + kd3);
            
            System.out.println(this.getServletName()+"日志3...D查询三级分类 的上级对象(定位一级)");
            Kind skd = secMng.findSecondById( (Integer)kd3.get("upid") );
            
            System.out.println(this.getServletName()+"日志4...保存至request,跳转到页面");
            bf.append("{");
            bf.append("     'success':0,");
            //三级分类信息
            bf.append("     'third':{");
            bf.append("             'kid':"+kd3.get("kid")+",");
            bf.append("             'kindName':'"+kd3.get("kindName")+"',");
            bf.append("             'kindImg':'"+kd3.get("kindImg")+"',");
            bf.append("             'kindDesc':'"+kd3.get("kindDesc")+"',");
            bf.append("             'upid':"+kd3.get("upid")+",");
            bf.append("     },");
            //二级分类信息
            bf.append("     'up':{");
            bf.append("             'kid':"+skd.getKid()+",");
            bf.append("             'kindName':'"+skd.getKindName()+"',");
            bf.append("             'kindImg':'"+skd.getKindImg()+"',");
            bf.append("             'kindDesc':'"+skd.getKindDesc()+"',");
            bf.append("             'upid':"+skd.getUpid()+",");
            bf.append("     },");
            
            bf.append("}");
        }catch (Exception e) {
            e.printStackTrace();
            bf.append("{'success':-1} ");
        }
        
        resp.getWriter().print( bf.toString() );
    }//findThirdById()

2.10 成功后Ajax把字符串解析为JSON格式,并把三级分类的信息回显,定位一级分类和二级分类



    "success":function(dt){
        alert(dt);
        dt  = eval("("+dt+")");
        //填写三级信息
        $("#uuvv").val( dt.third.kid);
        $("#xxyyzz").val( dt.third.kindName);
        $("#sdesc").val( dt.third.kindDesc);
        
        //定位 一级分类
        $("#upid option[value="+dt.up.upid+"]").attr("selected","selected");
        
        //定位 二级分类
        $("#secid option[value="+dt.up.kid+"]").attr("selected","selected");
    }

2.11 用户选择一级列表更改二级列表的数据



    
2.11.1 一级列表改变后用Ajax提交选中的一级分类id并查询对应的二级分类


    $("#upid").change(function(){
        var v = $(this).val();          //获取一级分类的value
        if( !v || v.length ==0)return;  //验证
        //alert(333);
        
        $.ajax({
            "type":"post",  
            "url":"<%=path%>/svlt/pingtai/kindthdbbb/findSecond",
            "data":{"fid":v},           //发送参数
            "success":function(dt){     //if(xhttp.readyState==4 && xhttp.status==200) 
                //alert(dt);    //  var dt = xhttp.responseText
                dt = eval( "("+dt+")");
                //alert(dt.success);
                if(dt.success =='0'){
                    $("#secid").html("");  //清空
                    $.each(dt.data,function(i,n){ //for( var i = 0 ; i < dt.data.length ;i++)
                                                  //     var n = dt.data[i];        
                        $("#secid").append("");   
                    })
                }//if(dt)
            }//success
        });//ajax
        
    });
2.11.2 找到对应的getSecond方法找的一级分类下的二级分类集合转为JSON格式的字符串记得测试

    /**
     * 测试url:   /svlt/pingtai/kindthdaaa/second?fid=2
     * @param   fid 上级id
     * @return  返回指定一级分类下的二级级分类的json格式
     *          {
     *              "success":0,
     *              "data":[
     *                      {"tid":"a01",'tname':'脱水蛋糕','timg':'aa.png','upid':'aa','upname':'蛋糕/甜点'},
     *                      {"tid":"a02",'tname':'软蛋糕','timg':'a02.png','upid':'aa','upname':'蛋糕/甜点'},
     *                      {"tid":"a03",'tname':'硬蛋糕','timg':'a03.png','upid':'aa','upname':'蛋糕/甜点'},
     *                     ]
     *          }
     *          
     *          错误: 返回json格式
     *          {"success":-1}
     */
    protected void getSecond(HttpServletRequest req, HttpServletResponse resp)throws IOException {
        StringBuffer bf = new StringBuffer();
        try{
            String fid = req.getParameter("fid");
            System.out.println(this.getServletName()+"日志1..接收一级分类ids" + fid);
            
            List secList = secMng.findSecondByFirst( Integer.parseInt(fid) );
            System.out.println(this.getServletName()+"日志2..查该一级分类下的二级分类集合");
            bf.append("{");
            bf.append("     'success':0,");
            bf.append("     'data':[");
            for (Kind k : secList) {
                bf.append("{'tid':'"+k.getKid()+"','tname':'"+k.getKindName()+"','timg':'"+k.getKindImg()+"','upid':'"+k.getUpid()+"'},");
            }
            bf.append("             ]");
            bf.append("}");
            System.out.println(this.getServletName()+"日志2..集合转换成json字符串" + bf.toString());
        }catch (Exception e) {
            e.printStackTrace();
            bf.append("{\"success\":-1}");
        }
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        resp.getWriter().print( bf.toString() );
    }//getSecond
2.11.3 成功后生成对应的二级分类列表


    "success":function(dt){     //if(xhttp.readyState==4 && xhttp.status==200) 
        //alert(dt);    //  var dt = xhttp.responseText
        dt = eval( "("+dt+")");
        //alert(dt.success);
        if(dt.success =='0'){
            $("#secid").html("");  //清空
            $.each(dt.data,function(i,n){ //for( var i = 0 ; i < dt.data.length ;i++)
                                          //     var n = dt.data[i];        
                $("#secid").append("");   
            })
        }//if(dt)
    }//success

2.12 用Ajax提交修改信息



    
保存
2.12.1 点击事件,用Ajax发送修改的信息,url接口/svlt/pingtai/kindthdbbb/update

    function f1(){
        //document.getElementById("fm01").submit();
        //document.forms[1].submit();
        //alert(11);
        //名称不填或 上级未选中 
        if( $("#xxyyzz").val().length <1 || $("#upid").val().length <1 ) return; 
        
        //alert(22);
            $.ajax({
            "url":"<%=path%>/svlt/pingtai/kindthdbbb/update",
            "type":"post",
            "data":{
                        "nn":$("#xxyyzz").val(),
                        "tt":$("#secid").val(),
                        "xx":$("#sdesc").val(),
                        "kd":$("#uuvv").val(),
                    },
            "success":function(dt){
                alert(dt);
                dt =eval("("+dt+")");
                if( dt.success==0){     //成功!
                    location.href='<%=path%>/pingtai/kind/kindThirdB_list.jsp';
                }
            }
        });
    }//f1()
2.12.2 找到对应的edit方法写完记得测试接口


    /**
     * 测试url:   /svlt/pingtai/kindthdbbb/update?nn=aa&tt=5&xx=aadesc&kd=12
     * 保存一个三级分类
     * @param   nn      三级分类名称
     * @param   tt      上级id
     * @param   xx      三级分类描述
     * @param   kd      三级分类id
     * 
     * @return
     *          正确:{"success":0}
     *          
     *          错误:{"success":-1}
     */
    private void edit(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        
        String p1 = req.getParameter("nn");
        String p2 = req.getParameter("xx");
        String p3 = req.getParameter("tt"); //上级id
        String pid= req.getParameter("kd");
        
        Kind k = new Kind();
        k.setKindDesc(p2);
        
        //k.setKindImg( ph!=null?ph:pimg);
        k.setKid( Integer.parseInt( pid ));
        
        k.setKindName(p1);
        k.setUpid( Integer.parseInt(p3) );
        
        System.out.println(this.getClass().getName()+"日志3...使用Manager保存");
        StringBuffer bf = new StringBuffer();
        bf.append("{");
        
        try{
            thdMng.updateThird(k);
            bf.append("     'success':0,"); 
        }catch (Exception e) {
            e.printStackTrace();
            bf.append("     'success':-1,");
        }
        bf.append("}");
        
        System.out.println(this.getClass().getName()+"日志3...返回json:" + bf.toString());
        resp.getWriter().print(  bf.toString() );
    }//edit
2.12.3 成功后把字符串转为JSON格式并跳转到list页面


    "success":function(dt){
        alert(dt);
        dt =eval("("+dt+")");
        if( dt.success==0){     //成功!
            location.href='<%=path%>/pingtai/kind/kindThirdB_list.jsp';
        }
    }

你可能感兴趣的:(前端后台分开之删除和修改三级列表)