这是本人在做基础javaweb时,针对出错的问题进行了总结-----1(测试程序为期末作业,做一个课程评价系统)
在servlet向js输出json数据时总是执行error(data),调试了一晚上仍未解决,便重新理顺了逻辑,使得问题得以解决!
实现的模块是管理员添加课程并显示。在添加成功后,最初是在AddCourseServlet中进行跳转到另一个ShowCourseServlet,然后在ShowCourseServlet中查询数据库显示数据,将显示的数据跳转到相应的show_course.jsp页面,在此处贴上出错代码:
AddCourseServlet:
if(search){
System.out.println("插入课程信息成功!");
resp.sendRedirect("servlet/ShowCourse");
//不能req.getRequestDispatcher("servlet/ShowCourse").forward(req, resp);
}
注:下篇博文解释resp.sendRedirect("servlet/ShowCourse");与req.getRequestDispatcher("servlet/ShowCourse").forward(req, resp);因为在测试中也犯过错。对两个方法理解模糊
ShowCourseServlet:
while(rs.next()){
Course cs=new Course();
int courseId=rs.getInt("courseId");
String courseName = rs.getString("courseName");
String teacher = rs.getString("teacher");
System.out.println("课程id为:"+courseId+"课程名为:"+courseName+"老师为:"+teacher);
cs.setCourseId(courseId);
cs.setCourseName(courseName);
cs.setTeacher(teacher);
list.add(cs);
}
JSONArray jsonarray = JSONArray.fromObject(list);
//将json对象转为字符串,以便将字符串输出
String data = jsonarray.toString();
System.out.println(data);
out.write(data);
req.getRequestDispatcher("/views/show_course.jsp").forward(req, resp);
show_course.jsp:
function showresult(){
//测试document.write(Date());
$.ajax({
//提交方式
type : "GET",
//提交的Action
url : "servlet/ShowCourse",
data : {
//提交的数据
},
//返回数据类型
dataType : "json",
success : function(data) {
alert("success");
var d = eval(data);
for ( var i in d) {
var str = '<tr><td>'
+ d[i].courseId
+ '</td><td>'
+ d[i].courseName
+ '</td><td>'
+ d[i].teacher
+ '</td></tr>';
$('#tbody').append(str);
}
},
error : function(data)
{ alert("fail");
},
});
}
</script>
正确逻辑应为:AddCourseServlet添加课程成功后跳转到展示页面show_course.jsp,在此页面请求ShowCourseServlet