2017-09-04 104 views
1

我想调用这个servlet使用Ajax jQuery中:

@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方法被调用,警报dsplayed正确:

alert("change handler is called "+name); 

不过下次我希望被调用的路径/getCoursesForSubject的Java Servlet,但事实并非如此。

谷歌浏览器的控制台,我得到这个错误:

GET http://localhost:8080/getCoursesForSubject?subjectName=AS%20-%20Aerospace%20Studies%22 404() 

这意味着Ajax调用制成,但服务器返回404错误。

这是解决通过给contextPath URL。正确$.get方法是:

$.get("${pageContext.request.contextPath}/getCoursesForSubject",{"subjectName":name},function(responseJson){ 
      $.each(responseJson,function(index,course){ 
       alert(course); 
       $("<option>").appendTo($("#courseSelect")).text(course.courseDescriptionName); 
      }); 
     }); 
+0

你能直接在浏览器地址栏中访问这个URL吗? – Nitesh

+0

我相信你正在发送一个帖子请求(因为你发布数据)不是? – Sletheren

回答

0

您还可以,如果你不使用JSTL使用

request.getServletContext() 

$.get()方法,确保servlet有get方法。

With $.post() servlet应该包含post方法。

相关问题