java吧 关注:1,236,312贴子:12,707,159

ssh框架二级菜单第二级菜单显示不了值

只看楼主收藏回复

最近在做毕设遇到一个问题,想在jsp做一个二级联动菜单,功能是通过部门查询部门下的员工,框架用的是ssh,数据交互用的是ajax+json,问题是第一级菜单选择后,第二级菜单没有显示对应的内容。

感觉问题出在json上,因为点击第一级菜单后,jsp调用js中的findEmp()方法到后台,能够查询到departmentdi(部门di)对应的值,但是从action返回值时总是调用了js中的error方法,也就是获取json数据失败。
下面是控制台查询到的数据:

点击第一级菜单选择部门后出现error提示:

jsp:
<select id="departmentid" name="departmentid" onChange="findEmp()">
<option value="0">请选择部门</option>
<c:forEach items="${list2}" var="d">
<option value="${d.departmentid}">${d.departmentname}</option>
</c:forEach>
</select>
<select id="employeeid" name="employeeid">
<option value="0">请选择员工</option>
</select>
js:
<script type="text/javascript">
function findEmp(){
var departmentid=document.getElementById("departmentid").value;
var url="{pageContext.request.contextPath}/ajax_findEmpByDep.action";
$.ajax({
type:"post",
dataType:"json",
data:{departmentid:departmentid},
url:url,
success:function(data){
alert("success");
for(var n=0;n<data.length;n++){
var ids=data[n].id;
var names=data[n].name;
$("#employeeid").append("<option id='"+ids+"' value='"+names+"'>"+names+"</option>");
}
},
error:function(){
alert("failed");
}
})
}
</script>
Action:
public class AjaxAction extends ActionSupport{
private AjaxService ajaxService;
private int departmentid;
private String result;
Department department=new Department();
public void setAjaxService(AjaxService ajaxService) {
this.ajaxService = ajaxService;
}
public int getDepartmentid() {
return departmentid;
}
public void setDepartmentid(int departmentid) {
this.departmentid = departmentid;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String findEmpByDep(){
//department.getDepartmentid();
System.out.println(departmentid);
List<Employee> empList=ajaxService.findById(departmentid);
Map<String,Object> map = new HashMap<String,Object>();
for(Employee emp:empList){
System.out.println(emp.getEmployeeid());
System.out.println(emp.getEmployeename());
map.put("employeeid", emp.getEmployeeid());
map.put("employeename", emp.getEmployeename());
}
JSONArray json = JSONArray.fromObject(map);
result=json.toString();
return "success";
}
}
struts.xml:
<package name="ajax" namespace="/" extends="struts-default,json-default">
<action name="ajax_*" class="ajaxAction" method="{1}">
<result name="success" type="json">
<param name="root">result</param>
</result>
</action>
</package>


IP属地:江苏1楼2018-04-23 09:14回复
    出错了呗


    IP属地:江苏来自Android客户端2楼2018-04-23 09:16
    回复
      求大佬指点迷津啊!!!


      IP属地:江苏3楼2018-04-23 09:16
      回复
        求大佬指点迷津啊!!!


        IP属地:江苏4楼2018-04-23 09:22
        回复
          求大佬指点迷津啊!!!


          IP属地:江苏5楼2018-04-23 09:27
          回复
            求大佬指点迷津啊!!!


            IP属地:江苏6楼2018-04-23 09:30
            回复
              你看下你ajax请求的方法是否正确前后台一起看下


              IP属地:陕西7楼2018-04-23 09:30
              回复
                @小幸运y琦
                这个要怎么看呢,我仔细看了下感觉应该没错。
                var url="{pageContext.request.contextPath}/ajax_findEmpByDep.action";这个是ajax请求的action方法,action中的findEmpByDep()能够被调用并查询到相关值,但是action返回json值好像出错,可能是json写法不对,或者配置文件写的有问题。感谢回复。


                IP属地:江苏8楼2018-04-23 09:43
                回复
                  你把你的代码截图吧 这样看着费劲儿


                  9楼2018-04-23 09:46
                  回复
                    jsp:

                    js:

                    Action:


                    struts.xml:


                    IP属地:江苏10楼2018-04-23 09:54
                    回复
                      后端dug下,看下有没有获取到数据,有获取到,然后前端在debug下,看下又被有吧数据传输到前端..估摸是后端去数值的时候出现错误,或者前端数据格式错误


                      IP属地:福建11楼2018-04-23 09:58
                      收起回复
                        在ajax的success见面加上 console.log(data) 浏览器f12看一看data有没有值


                        IP属地:上海来自Android客户端12楼2018-04-23 10:00
                        回复
                          还有你那个jsp的foreach要着干嘛 你都ajax动态添加option了 还要这干嘛


                          IP属地:上海来自Android客户端13楼2018-04-23 10:03
                          回复(1)
                            加了console.log(data) 后,运行之后jsp页面出现错误
                            这个是没加","

                            这个是加了","

                            浏览器f12后是这个样子:


                            IP属地:江苏14楼2018-04-23 10:23
                            回复(1)
                              你们的前端好棒啊 我就是前端贼弱


                              IP属地:湖南来自Android客户端15楼2018-04-23 23:31
                              回复