2017-02-27 11 views
0

Ich versuche, Servlet mit Ajax aufzurufen, aber die URL in $ .ajax() leitet mich nicht zum Servlet um.
Können Sie alle einen Blick darauf werfen und mir sagen, warum Servlet nicht aufgerufen wird.Servlets können nicht mit Ajax aufgerufen werden.

index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
 
    pageEncoding="ISO-8859-1"%> 
 
    <%@ page import="model.MongoDBJDBC" %> 
 
<%@ page import="java.util.ArrayList" %> 
 
<%@ page import="java.util.List" %> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
 
<html> 
 
<head> 
 

 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
 
    <link rel="stylesheet" type="text/css" href="css/stylesheet.css"> 
 
    \t <script src="http://code.jquery.com/jquery-1.10.2.js" 
 
\t type="text/javascript"></script> 
 
    \t <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
\t <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> 
 
\t <script type="text/javascript"> 
 
\t google.charts.load('current', { 
 
\t \t packages : [ 'corechart' ] 
 
\t }); 
 
\t </script> 
 
<title>Servlets Selection Menu</title> 
 
</head> 
 
<body> 
 
\t <div id="Servletssframe" style="width:200px; height:100px; margin-left:5px ;"> 
 
\t \t <form method="get" action="ReqFilter" id="myform"> 
 
\t \t \t <input type="radio" value="Servlets1" name="servlet" id="Servlets1"><label>Servlets 1</label><br> 
 
\t \t \t <input type="radio" value="Servlets2" name="servlet" id="Servlets2"><label>Servlets 2</label><br> 
 
\t \t \t <input type="radio" value="Servlets3" name="servlet" id="Servlets3"><label>Servlets 3</label><br> 
 
\t \t \t <input type="radio" value="Servlets4" name="servlet" id="Servlets4"><label>Servlets 4</label><br> 
 
\t \t \t <input type="radio" value="Servlets5" name="servlet" id="Servlets5"><label>Servlets 5</label><br> 
 
\t \t \t <input type="button" value="submit" id="button"> 
 
\t \t </form> 
 
\t </div> 
 
</body> 
 
\t 
 
<div id="container" style="width: 700px; height:700px; margin: 0 auto"></div> 
 

 

 
<script type="text/javascript"> 
 
    
 

 
    
 
\t $(document).ready(function() { \t \t 
 
     $('#button').click(function() {   
 
     \t var servlet=$('input[type=radio][name=servlet]:checked').attr('id'); 
 
     \t //console.log(servlet); 
 
     \t 
 
     \t $.ajax({ 
 
       //url:'/ServletsUsingAjax/RequestFilter?servlet='+servlet, 
 
       \t 
 
    \t \t \t \t url:'/ServletsUsingAjax3/RequestFilter?servlet='+servlet, 
 
       type:'get', 
 
       /* success:function() 
 
       { 
 
       \t alert(this.url); 
 
       }, 
 
       */ 
 
     \t 
 
       } 
 
     ); 
 
     }); 
 
    }); 
 
\t 
 
</script>

ReqFilter.java

package control;  
import java.io.IOException;  
import java.io.PrintWriter;  

import javax.servlet.RequestDispatcher;  
import javax.servlet.ServletException;  
import javax.servlet.annotation.WebServlet;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
//@WebServlet("/RequestFilter")    
public class ReqFilter extends HttpServlet {   

public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException   
{  
     response.setContentType("text/html");  
     //response.setContentType("text/plain;charset=UTF-8");  
     RequestDispatcher dispatcher; 
     String value=request.getParameter("servlet").trim();  

     PrintWriter out=response.getWriter(); 
     out.println("This"+value); 
     if(value.equals("Servlets1")) 
     { 
      dispatcher=request.getRequestDispatcher("index.jsp"); 
      dispatcher.include(request,response); 

      out.println("<script type='text/javascript'>"); 
      out.println("console.log("+value+")"); 
      out.println("$('#container').load('textfile.jsp')"); 
      //out.println("google.charts.setOnLoadCallback(drawChart);"); 
      out.println("</script>"); 
     } 
     if(value.equals("Servlets2")) 
     { 
      dispatcher=request.getRequestDispatcher("index.jsp"); 
      dispatcher.include(request,response); 
      out.println("<script type='text/javascript'>"); 
      //out.println("<div id='container2' style='width: 700px; height:700px; margin: 0 auto'></div>"); 
      out.println("$('#container').load('textfile2.jsp')"); 
      //out.println("google.charts.setOnLoadCallback(drawChart);"); 
      out.println("</script>"); 
     } 
     if(value.equals("Servlets3"))  
     {  
      dispatcher=request.getRequestDispatcher("index.jsp");  
      dispatcher.include(request,response);  
      out.println("<script type='text/javascript'>");  

      out.println("Nothing to dipsplay"); 

      out.println("</script>"); 
     } 



}  
}  

web.xml

<web-app> 

<servlet> 
<servlet-name>ServletsUsingAjax</servlet-name> 
<servlet-class>control.ReqFilter</servlet-class> 
</servlet> 

<servlet-mapping> 
<servlet-name>ServletsUsingAjax</servlet-name> 
<url-pattern>/ReqFilter</url-pattern> 
</servlet-mapping> 

</web-app> 

Antwort

0

Ersetzen Sie einfach Ihre Ajax URL durch den untenstehenden Code.

Es gibt ein Problem mit Servlet Mapping und URL-Muster-URL in Ajax übergeben.

+0

ich das versucht, es nicht @alfrescolearner funktioniert. – user5501265

+0

Haben Sie eine andere Lösung? – user5501265

1
<script type="text/javascript"> 
    $(document).ready(function() {   
     $('#button').click(function() {   
     var servlet=$('input[type=radio][name=servlet]:checked').attr('id'); 
      $.ajax({ 
       url:'RequestFilter?servlet='+servlet, 
       type:'get', 
       success:function(data) 
       { 
        alert(data); 
       } 
       }); 
     }); 
    }); 
</script> 

Sie können Servlet aufrufen über Code, Dank.

+0

immer noch es funktioniert nicht. – user5501265

+1

$ Schnipsel ({ url: 'RequestFilter', Daten: {Servlet: Servlet}, Typ: 'get', Erfolg: function (data) { alert (Daten); } }); –

+1

diesen Code Versuchen ... –

0

Ich poste meinen Arbeitscode wie oben beschrieben. Versuchen Sie dies.
index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 

<%@ page import="java.util.ArrayList"%> 
<%@ page import="java.util.List"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<link rel="stylesheet" type="text/css" href="css/stylesheet.css"> 
<script src="http://code.jquery.com/jquery-1.10.2.js" 
    type="text/javascript"></script> 
<script 
    src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script type="text/javascript" 
    src="https://www.gstatic.com/charts/loader.js"></script> 
<script type="text/javascript"> 
    google.charts.load('current', { 
     packages : [ 'corechart' ] 
    }); 
</script> 
<title>Servlets Selection Menu</title> 
</head> 
<body> 
    <div id="Servletssframe" 
     style="width: 200px; height: 100px; margin-left: 5px;"> 
     <form method="get" action="ReqFilter" id="myform"> 
      <input type="radio" value="Servlets1" name="servlet" id="Servlets1"><label>Servlets 
       1</label><br> <input type="radio" value="Servlets2" name="servlet" 
       id="Servlets2"><label>Servlets 2</label><br> <input 
       type="radio" value="Servlets3" name="servlet" id="Servlets3"><label>Servlets 
       3</label><br> <input type="radio" value="Servlets4" name="servlet" 
       id="Servlets4"><label>Servlets 4</label><br> <input 
       type="radio" value="Servlets5" name="servlet" id="Servlets5"><label>Servlets 
       5</label><br> <input type="button" value="submit" id="button"> 
     </form> 
    </div> 
</body> 

<div id="container" style="width: 700px; height: 700px; margin: 0 auto"></div> 


<script type="text/javascript"> 
    $(document) 
      .ready(
        function() { 
         $('#button') 
           .click(
             function() { 
              var servlet = $(
                'input[type=radio][name=servlet]:checked') 
                .attr('id'); 
              //console.log(servlet); 

              $ 
                .ajax({ 
                 //url:'/ServletsUsingAjax/RequestFilter?servlet='+servlet, 

                 url : 'ReqFilter?servlet='+ servlet, 
                 type : 'get', 


                }); 
             }); 
        }); 
</script 

> 

ReqFilter.java

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse;  
//@WebServlet("/RequestFilter")    
public class ReqFilter extends HttpServlet {   

    private static final long serialVersionUID = 1L; 

public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException   
{  
    System.out.println("HEREEEEEEEEEEEEEE"); 
     response.setContentType("text/html");  
     //response.setContentType("text/plain;charset=UTF-8");  
     RequestDispatcher dispatcher; 
     String value=request.getParameter("servlet").trim();  

     PrintWriter out=response.getWriter(); 
     out.println("This"+value); 
     if(value.equals("Servlets1")) 
     { 
      dispatcher=request.getRequestDispatcher("index.jsp"); 
      dispatcher.include(request,response); 

      out.println("<script type='text/javascript'>"); 
      out.println("console.log("+value+")"); 
      out.println("$('#container').load('textfile.jsp')"); 
      //out.println("google.charts.setOnLoadCallback(drawChart);"); 
      out.println("</script>"); 
     } 
     if(value.equals("Servlets2")) 
     { 
      dispatcher=request.getRequestDispatcher("index.jsp"); 
      dispatcher.include(request,response); 
      out.println("<script type='text/javascript'>"); 
      //out.println("<div id='container2' style='width: 700px; height:700px; margin: 0 auto'></div>"); 
      out.println("$('#container').load('textfile2.jsp')"); 
      //out.println("google.charts.setOnLoadCallback(drawChart);"); 
      out.println("</script>"); 
     } 
     if(value.equals("Servlets3"))  
     {  
      dispatcher=request.getRequestDispatcher("index.jsp");  
      dispatcher.include(request,response);  
      out.println("<script type='text/javascript'>");  

      out.println("Nothing to dipsplay"); 

      out.println("</script>"); 
     } 



}  
}  

web.xml

<web-app> 

    <servlet> 
     <servlet-name>ServletsUsingAjax</servlet-name> 
     <servlet-class>ReqFilter</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>ServletsUsingAjax</servlet-name> 
     <url-pattern>/ReqFilter</url-pattern> 
    </servlet-mapping> 

</web-app> 
+0

Wurde Ihr Servlet aufgerufen, falls ja, die if-Bedingung basierend auf den Servlets (Optionsfeld)) Sie haben ausgewählt ausgeführt? weil auf Klicken der Übergebenbutton myb Servlet nicht anruft, wenn ich versuchte, die URL im Netz zu sehen dh using inspect elemet auf firefox browser sein Erscheinen "200 ok" das bedeutet, dass meine URL auch perfekt ist, wenn ich versuche, diese URL durch das Kopieren zu laufen es, mein Servlet wird aufgerufen. – user5501265

+0

mit Buchungscode funktioniert es gut. –

Verwandte Themen