javaWeb二级联动菜单问题

小小风云动 2018-01-11 07:02:12
准备实现二级联动
数据库:
一级分类
二级分类
web页面前端:function dl() {
//获取ID大类选项索引
var d = document.getElementById("dlid").selectedIndex;
//根据索引获取对应的option的value的值
var dlid =document.getElementsByTagName("option")[d].value;
alert (dlid);
var url="<%=basePath%>AdminServlet?method=erjiguanlian&daleiid="+dlid;
alert(url);
$.ajax({
type: "post",//数据发送的方式(post 或者 get)
url: url,//要发送的后台地址
data: {'dlid':dlid},//要发送的数据(参数)格式为{'val1':"1","val2":"2"}
dataType: "json",//后台处理后返回的数据格式
success: function (data) {//ajax请求成功后触发的方法
alert('请求成功');
},
error: function (msg) {//ajax请求失败后触发的方法
alert(msg);//弹出错误信息
}
});

}
java后台处理:
String id = request.getParameter("dlid");
System.out.println("我是测试二级关联菜单的===="+id);
String sql ="select * from xiaolei where daleiid='"+id+"'";
List pagelist3 = cBean.getCom(sql, 4);
Map map = new HashMap();
if(!pagelist3.isEmpty()){
for(int i=0;i<pagelist3.size();i++){
List pagelist2 =(ArrayList)pagelist3.get(i);
String xiaoleiid=pagelist2.get(0).toString() ;
String xiaoleimc=pagelist2.get(2).toString() ;
map.put(xiaoleiid, xiaoleimc);
}
JSONObject jsonObject = JSONObject.fromObject(map);
String xl = jsonObject.toString();
PrintWriter out = response.getWriter();
out.write(xl);
//System.out.println(xl);
System.out.println(jsonObject+"输出json对象");
控制台可以输出测试数据:{"7":"阅读理解","6":"口才表达","8":"英语口语"}输出json对象

一级菜单,从数据库遍历的,二级菜单计划给他方法让它自动遍历,但是现在卡壳了,不知道前面怎么获取数据,大神求救
...全文
483 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZHOU西口 2018-01-12
  • 打赏
  • 举报
回复
引用 4 楼 qq_35237321 的回复:
[quote=引用 1 楼 splendid_java 的回复:] 1、一级菜单,直接从库返回 2、二级菜单,根据提交选中的一级菜单中的项,ajax返回二级菜单的列表(json对象), -------------------------------------------- LZ应该是这么做的,但是不明白到底什么问题。
/*********************************************************************/ {"7":"阅读理解","6":"口才表达","8":"英语口语"} 我输出的json是这个样子,但是别人的json是[{ID:1,Name:"a",Price:1},{ID:2,Name:"b",Price:4}],这个样子,我怎么才能把他们放到一起呢,上面的是3个但是跟别人的格式比起来看,貌似我定义的没有属性啊,正确的应该是[{ID:7,Name:"阅读理解"},{ID:6,Name:"口才表达"},{ID:8,Name:"英语口语"}][/quote] 1、先了解json的结构:{key,value},这里的key可以换成你的数据库表字段名,value就是字段对应的数据。 2、你输出的json,没把字段名作为key,而是把数据库的(主键)id作为key。 3、可以先定义一个map,或者通过后台查询直接返回一个map,然后转为json对象,这样json的结构就类似这样的:{ID:8,Name:"英语口语"}] --------------------------------------------------------------------------
小小风云动 2018-01-12
  • 打赏
  • 举报
回复
引用 1 楼 splendid_java 的回复:
1、一级菜单,直接从库返回 2、二级菜单,根据提交选中的一级菜单中的项,ajax返回二级菜单的列表(json对象), -------------------------------------------- LZ应该是这么做的,但是不明白到底什么问题。
/*********************************************************************/ {"7":"阅读理解","6":"口才表达","8":"英语口语"} 我输出的json是这个样子,但是别人的json是[{ID:1,Name:"a",Price:1},{ID:2,Name:"b",Price:4}],这个样子,我怎么才能把他们放到一起呢,上面的是3个但是跟别人的格式比起来看,貌似我定义的没有属性啊,正确的应该是[{ID:7,Name:"阅读理解"},{ID:6,Name:"口才表达"},{ID:8,Name:"英语口语"}]
br_lixiao 2018-01-12
  • 打赏
  • 举报
回复

//1.ajax 绑定一级菜单数据
var firstVal = $("#一级菜单").val(); //获取一级菜单选中值
var url = "url地址";
//2.绑定二级菜单前先清空二级下拉框
$("#二级菜单 option").remove();
//3.根据你ajax success(data)  遍历data写入select
for(int i=0;i<data.length;i++){
     $("#二级菜单").append("<option>"+data.内容+"</option>");
}
小小风云动 2018-01-12
  • 打赏
  • 举报
回复
引用 1 楼 splendid_java 的回复:
1、一级菜单,直接从库返回 2、二级菜单,根据提交选中的一级菜单中的项,ajax返回二级菜单的列表(json对象), -------------------------------------------- LZ应该是这么做的,但是不明白到底什么问题。
这些都是网上找的瞎拼凑的,你说的也是我想做的,但是语法不会啊,哪里代表什么也不清楚,现在不知道怎么弄出来返回值
小小风云动 2018-01-12
  • 打赏
  • 举报
回复
JAVA后台:不搞那么复杂了,就一个二级菜单而已,我直接根据一级菜单获取的值去二级菜单数据库里查询对应的字段值,把二级菜单需要的字段值放到list里。然后json输出。
String id = request.getParameter("dlid");
String sql ="select xiaolei from xiaolei where daleiid='"+id+"'";
List pagelist3 = cBean.getCom(sql, 1);
JSONArray jsonObject = JSONArray.fromObject(pagelist3);
String string =jsonObject.toString();
PrintWriter out = response.getWriter();
out.write(string);
out.flush();
out.close();
///////////////////////////////////////////
前台jsp页面:JS里面根据返回的列表,遍历一下,造出几个opoptions
var result=eval(data);//把获取到的json对象字符串用js转化为字符串
/*遍历返回的json数据字符串*/
var xiaolei=$("#xlid")[0];
//这一句很关键,每次option选项必须清空,不然每次option的值会一直累加在option中
xiaolei.options.length=1;
for(var i=0;i<result.length;i++)
{
xiaolei.options[xiaolei.options.length]=new Option(result[i],i.text);
}

////////////////////////////////////////
插入数据库后测试数据为
根据原来的二级数据库一致

/*****/
既然他们保持一致了,也就是说完成了,得到了想要的结果。
谢谢大家捧场
ZHOU西口 2018-01-11
  • 打赏
  • 举报
回复
1、一级菜单,直接从库返回 2、二级菜单,根据提交选中的一级菜单中的项,ajax返回二级菜单的列表(json对象), -------------------------------------------- LZ应该是这么做的,但是不明白到底什么问题。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧