其实我的想法是在选课页面,直接显示该门课程是否已经被该学生选择,若已选,则显示已选并且点击没有事件响应。但是由于时间的限制,我没有想出一个好的解决方案,是在数据库查找所有课程信息时,顺便查询每门课是否被学生选择,然后再赋予每门课程一个标签,还是在前端进行数据传递再进行判断呢?显然我觉得应该是在数据库查询时就进行这一操作。然而我尝试了一种在前端对于每一个课程,显示标签前进行ajax传递课程号,一个课程一个课程进行查询再显示:
效果就是这样,虽然这样的操作显然是不对的,但是不知道为什么第一次登陆之后数据很快就能显示,再次请求数据的时候会一直等待响应。这个方法显然是不科学的,我也就是尝试了一下,故还是用回弹出提示框的方法来进行提醒。
后端
//学生选课
public String selectCourse() {
// 学号可以从session中获取
Student stu = (Student) ActionContext.getContext().getSession().get("user");
String sid = stu.getSid();
//是否已经选过该课
boolean isselected = scService.isCourseSelected(cid, sid);
//若已经选择
if(isselected){
returnData = "isselected";
}else{
// 选课
boolean success = scService.selectCourse(cid, sid);
if (success) {
returnData = "success";
} else {
returnData = "error";
}
}
return SUCCESS;
}
前端
function selectCourse(cid){
var cid={'cid':cid};
console.log(cid);
$.ajax({
url:'selectCourse',
type:'post',
data:cid,
dataType:"json",
//async: false ,
success:function(data){
if(data=="success"){
$("#tag").text("选课成功");
$("#SuccessModal").modal();
}else if(data="isselected"){
$("#opFaildeMessage").text("已选该课程!");
$("#FailedModal").modal();
}else{
$("#FailedModal").modal();
}
}
});
}
效果