Ich möchte dieses Servlet mit Ajax in Jquery nennen:
@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 {
...........
Und ich in jsp Seite haben diese jQuery-Code Ajax-Request aufrufen:
$("#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);
});
});
});
Die change
Methode aufgerufen wird und Alarm wird dsplayed richtig:
alert("change handler is called "+name);
aber nächstes erwarte ich, dass Java-Servlet auf dem Weg /getCoursesForSubject
aufgerufen werden, aber es ist nicht.
In Google Chrome-Konsole bekomme ich diesen Fehler:
GET http://localhost:8080/getCoursesForSubject?subjectName=AS%20-%20Aerospace%20Studies%22 404()
Das bedeutet, dass Ajax-Aufruf gemacht wurde, aber Server zurückgegeben 404 Fehler.
Es ist gelöst durch Angabe contextPath
zu url. Richtig $.get
Methode ist:
$.get("${pageContext.request.contextPath}/getCoursesForSubject",{"subjectName":name},function(responseJson){
$.each(responseJson,function(index,course){
alert(course);
$("<option>").appendTo($("#courseSelect")).text(course.courseDescriptionName);
});
});
Können Sie auf diese URL direkt in der Browser-Adressleiste zugreifen? – Nitesh
Ich glaube, Sie senden eine Post-Anfrage (da Sie Daten veröffentlichen) Nein? – Sletheren