我想在jquery中用ajax调用这个servlet:
@WebServlet("/getCoursesForSubject")
public class GetCoursesForSubjectServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public GetCoursesForSubjectServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
...........
在jsp页面中,我有这个jquery代码来调用ajax请求:
$("#subjectSelect").change(function(){
var name = $("#subjectSelect option:selected").text();
alert("change handler is called "+name);
$.get("/getCoursesForSubject",{"subjectName":name},function(responseJson){
$.each(responseJson,function(index,course){
alert(course);
$("<option>").appendTo($("#courseSelect")).text(course.courseDescriptionName);
});
});
});
调用change
方法并正确显示警告:
alert("change handler is called "+name);
但接下来我希望调用路径/getCoursesForSubject
上的java servlet,但事实并非如此。
在Google Chrome控制台中,我收到此错误:
GET http://localhost:8080/getCoursesForSubject?subjectName=AS%20-%20Aerospace%20Studies%22 404 ()
这意味着已进行了ajax调用,但服务器返回了404错误。
通过将contextPath
提供给网址,已解决。正确的$.get
方法是:
$.get("${pageContext.request.contextPath}/getCoursesForSubject",{"subjectName":name},function(responseJson){
$.each(responseJson,function(index,course){
alert(course);
$("<option>").appendTo($("#courseSelect")).text(course.courseDescriptionName);
});
});
答案 0 :(得分:0)
您也可以使用
request.getServletContext()
如果您不使用JSTL。
使用$.get()
方法,确保servlet具有get
方法。
使用$.post()
servlet应该包含post
方法。