在使用Ajax进行级联是遇到了一个问题,求各位帮帮忙,给小弟指点一下
HTML代码片段:
<td align="left" style="border:none;">课程名称:
<select name="tempName" id="tempName">
<option value="">----请选择课程----</option>
<c:forEach items="${courseInfos }" var="courseInfo">
<option value="${courseInfo.courseName }">${courseInfo.courseName }</option>
</c:forEach>
</select>
</td>
<td align="left" height="30">
考试状态:
<select name="paperState" id="paperState">
<option value="" >----请选择试卷状态----</option>
</select>
</td>
JS代码片段:(已经载入了jQuery库)
$(function(){
/*
* 下拉列表的级联
*/
// 1.获取 #tempName,给其添加 change 事件
$("#tempName").change(function(){
// alert("选择课程...");
// 2. 获取 #paperState ,使其只保留第一个子节点
$("#paperState option:not(:first)").remove();
// alert("获取 #paperState ,使其只保留第一个子节点");
// 3.获取 #tempName 的值,若该值为“”,则说明选择了“请选择”,则不需发送 Ajax 请求
// 若不为空,则准备发送 Ajax 请求
var tempName = $("#tempName").val();
// alert("#tempName 的值 = " + tempName);
if(tempName != ""){
//alert("不为空,准备发送 Ajax 请求...");
var url = "${pageContext.request.contextPath }/exam/LaunchExam_getPaperState.do";
var args = {"courseName": tempName, "time":new Date()};
// 发送请求
// alert("发送请求");
$.getJSON(url, args, function(data){
alert("data:" + data);
});
}
});
});
</script>
Action中的方法:
/**
* 获取“试卷状态”方法:用于获取试卷的状态,“已发布已考”还是其他。
* 此处是级联操作使用的方法。
* 注意:级联完毕后,要以表单的形式显示所有符合条件的数据信息
* 级联:课程名称--->考试状态。二级联动
* @return
*/
public String getPaperState(){
System.out.println("准备获取“试卷“状态...");
String courseName = "";
// 获取 Ajax 请求中的参数
try {
response.setCharacterEncoding( "UTF-8" );
courseName = request.getParameter("courseName");
courseName = new String(courseName.getBytes("ISO8859-1"),"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println("课程号:" + courseName);
// 根据该参数,获取 MakePaper_PaperInfo 中的信息
// 此处:o.courseName中的 o是表的别名,这是在 commonDaoImpl 中定义的
String condition = " and o.courseName = ?";
Object[] params = {courseName};
// 根据courseName 查 课程表(Course_CourseInfo),获取课程号
List<CourseInfo> courseInfos = courseInfoService.findCourseInfoByConditionNoPage(condition, params, null);
System.out.println("courseInfos size is:" + courseInfos.size());
// 获取 courseInfos 中的 courseCode 字段
Object[] codeParams = new Object[courseInfos.size()];
System.out.println("正在获取courseCode......");
for(int i = 0 ; i < courseInfos.size(); i ++){
CourseInfo c = courseInfos.get(i);
System.out.println("第" + i + "个CourseInfo为:" + c);
codeParams[i] = c.getCourseCode();
System.out.println("code" + i + " = " + codeParams[i]);
}
// 根据 codeParams 到 考试表(MakePaper_PaperInfo)中获取信息
condition = " and o.courseCode = ?";
System.out.println("condition:" + condition);
List<PaperInfo> paperInfos = paperInfoService.findPaperInfoByConditionNoPage(condition, codeParams, null);
System.out.println("paperInfos的size是:" + paperInfos.size());
// 将 paperInfos 对象转为 JSON 对象
ObjectMapper mapper = new ObjectMapper();
try {
String result = mapper.writeValueAsString(paperInfos);
System.out.println("result:" + result);