2016-08-03 8 views
2

Ich möchte die Antwort meines Servlets auf derselben Seite drucken, ohne die Seite zu aktualisieren. Ich habe diesen Code geschrieben, aber ich kann nicht verstehen, warum er die Seite öffnet: http://localhost:8080/..../NewServlet.do, anstatt das Ergebnis auf derselben Seite anzuzeigen.Antwort des Servlets ohne Aktualisierung JSP

 <html> 
     <head> 
     <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 

    <script type="text/javascript"> 

    var form = $('#form1'); 
    form.submit(function() { 

    $.ajax({ 
    type: form.attr('method'), 
    url: form.attr('action'), 
    data: form.serialize(), 
    success: function (data) { 
    var result=data; 
    $('#result').attr("value",result); 

     } 
    }); 

    return false; 
    });  </script> 
    </head> 
    <body> 
    <form name=form1 action="NewServlet.do" method="post"> 
    <select id='choose' class='form-control' name='choose'> 
<option value='prodotti'>Products</option> 
<option value='login'>Objects</option> 
</select> 
<button type='submit' class='btn btn-default' style="width: 40%;">SUBMIT</button> 

    <div id='result'> 
     /// I want the servlet's response is placed here. 
    </div> 

    </form> 
    </body> 
    <html> 

Mein Servlet

 protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

     response.setContentType("text/html"); 
     String i = request.getParameter("choose"); 
     PrintWriter out = response.getWriter(); 
     out.println("<br>"+i+"</br>"); 

     } 

Antwort

3

Es ist eigentlich nicht über Java oder JSP, sondern über JavaScript. Versuchen

form.submit(function (event) { 
    event.preventDefault(); // magic! 
    $.ajax({ 
    type: form.attr('method'), 
    url: form.attr('action'), 
    data: form.serialize(), 
    success: function (data) { 
     var result=data; 
     $('#result').attr("value",result); 
    } 
    }); 
    return false; 
}); 
+0

Nichts. Es lädt die Seite :( – blinkettaro

+0

Ah, jetzt sehe ich es: Erstens, Ihr Formular hat keine ID, aber Sie verwenden ID-Selektor, um es zu bekommen - kann nicht funktionieren, fügen Sie 'id =" Form1 "' zum Formular hinzu , Würde ich das Skript in '$ (document) .ready (function() {... hier den ursprünglichen Code ...});', um sicher zu sein, dass DOM bereits konstruiert ist, wenn wir es ändern. –

+0

Ich ändere meinen Code (nicht den, den du geschrieben hast) addiere id = 'form1'. Es funktioniert nicht. Dann habe ich deinen Code benutzt und es funktioniert nicht. Es scheint, dass der Javascritp-Code nicht gelesen oder aktiviert wurde. .:/ – blinkettaro

0

Try this: In jsp

<input class="help_button" id="help_button" type="button" onclick="showDetail()" value="Do Smth" /> 


    function showDetail() { 

    $.ajax({ 
     url:'/yourServlet.cfm', 
     data:{dataName:data}, 
     type: 'GET', 
    }) 
    .done(function(result) { 
     //here do smth with result 
    }); 
} 

Servlets

response.setContentType("text/plain"); 
response.getWriter().print("responseData"); //----Sending response 
Verwandte Themen