2016-08-03 7 views
2

サーブレットの応答を同じページに表示したい場合は、ページを更新しないでください。私はこのコードを書いたが、なぜ同じページに結果を表示するのではなく、ページが開かれる理由を理解できない。http://localhost:8080/..../NewServlet.doJSPをリフレッシュせずにサーブレットのレスポンス

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

マイサーブレット

 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>"); 

     } 

答えて

3

これは、JavaやJSPについてのが、JavaScriptについて実際にはありません。

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

何も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 }); } 

を。それはページをリロードする:( – blinkettaro

+0

ああ、今私はそれを参照してください:あなたのフォームはIDがありませんが、それを取得するためにIDセレクタを使用しています - うまくいかない、 'id =" form1 "'をフォームに追加してください。私はスクリプトを '$(document).ready(function(){...ここに元のコード...});'にラップします。 –

+0

私はあなたのコードを変更しました。あなたが書いたものではなく、id = 'form1'を追加しても動作しません。 : – blinkettaro

0

を試してみて、このてみてください:あなたのサーブレット

response.setContentType("text/plain"); 
response.getWriter().print("responseData"); //----Sending response 
関連する問題