2017-09-04 12 views
1

나는 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 코드가 있습니다

$("#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에 자바 서블릿이 호출 될 것으로 예상하지만,하지 않습니다.

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

이 아약스 호출이 있지만 서버가 404 오류를 반환되었음을 의미 : 구글 크롬의 콘솔에서

나는이 오류가 발생합니다.

URL에 contextPath을 부여하면이됩니다. 입니다. 올바른 $.get 방법은 : 당신은 JSTL을 사용하지 않는 경우도

request.getServletContext() 

을 사용할 수 있습니다

$.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

.

$.get() 메서드를 사용하는 경우 서블릿에 get 메서드가 있는지 확인하십시오.

$.post() 서블릿은 post 메소드를 포함해야합니다.