删除
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在浏览器里测试接口
1.6编写接口文档(简单版)
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';
}
}