2016-08-03 76 views
2

我想在不刷新页面的情况下在同一页面中打印我的servlet的响应。我写了这段代码,但我不明白为什么它打开页面:http://localhost:8080/..../NewServlet.do,而不是在同一页面显示结果。Servlet的响应没有刷新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> 

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

     } 

回答

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

没有。它重新加载页面:( – blinkettaro

+0

啊,现在我看到了它:首先,你的表单没有id,但是你使用ID选择器来获取它 - 不能工作,在表单中添加id =“form1”'。 ,我会将脚本封装到'$(document).ready(function(){...这里是原始代码...});',当然,当我们修改它时,DOM已经被构建。 –

+0

我修改了我的代码(不是你写的那个)添加id ='form1',它不起作用,然后我用你的代码,它不工作,看起来javascritp代码没有被读取或激活。 :/ – blinkettaro

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

你的servlet

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