JSP Ajax Servlet - 在JSP中获取返回值

时间:2014-02-10 11:41:18

标签: java jquery ajax jsp servlets

我有两个表,当我点击第一个表时会加载其中一个表。 所以我在JSP中使用Ajax来实现它:

  $("#tablesorter-demo tr").click(function(){
        $('#tablesorter-demo tr').not(this).removeClass('hilite');
        $(this).toggleClass('hilite'); 

        $.ajax({
           type: "post",
           url: "gerer_caf_adherente",
           data: "name=test",
           success: function(data){

           }
         });
    });

在我的JAVA中:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String  forward = "/gererCafAdherentes/accueil_gerercafadherentes.jsp";

    try {
        if(request.getParameter("name") != null){
            codeOrganismeCentrale = "5874";
            libelle = "CAF Rhones Alpes";
            request.setAttribute("codeOrganismeCentrale",codeOrganismeCentrale);
            request.setAttribute("libelle",libelle);
                        }getServletContext().getRequestDispatcher(forward).forward(request, response);
    } catch (Exception e) {
        e.getMessage();
    }
}

所以,我想在我的JSP中获取值:libelle和codeOrganismeCentrale,可以将它添加到may表中,但我不能..

我的表格代码:

 <td id="td_codeorganismeSPCentrale" > <% if(request.getAttribute("codeOrganismeCentrale") != null){
                                                                                out.print(request.getAttribute("codeOrganismeCentrale"));
                                                                            } %></td>
                                    <td id="td_libelleCentrale" ><% if(request.getAttribute("libelle") !=null){
                                                                        out.print(request.getAttribute("libelle")); 
                                                                    }%></td>

2 个答案:

答案 0 :(得分:3)

你可以通过两种方式获得它。

1)您可以从请求或会话中获取

在JSP页面中编写以下代码以获取值。

String value = session.getAttribute("libelle"); OR
String value = request.getAttribute("libelle");

2)你可以在Ajax Response中传递值。

在Servlet上编写以下代码。

out.println(libelle);

在Ajax中,您将获得响应数据。

$.ajax({
       type: "post",
       url: "gerer_caf_adherente",
       data: "name=test",
       success: function(data){
        alert(data);  // your response will print here.

       }
     });

答案 1 :(得分:2)

您的JSP代码在服务器端运行,您的JS代码在客户端运行。他们无法直接通过HTTP请求进行通信。

请求对象是表示单个请求的Java抽象。在请求上保存属性只是在服务器处理HTTP请求时传递数据的一种方便方法,一旦请求完成就会被丢弃,因此在AJAX之后你不会得到请求属性。但它没有t影响服务器对HTTP请求的响应,因此您可以在Response中打印数据。

要通过AJAX请求将信息从服务器传递到客户端,您必须在响应中包含该信息。

因此在java端使用以下方法写入响应数据:

out.println(libelle);

在Javascript中,您将能够获得响应中的数据

$.ajax({
   type: "post",
   url: "gerer_caf_adherente",
   data: "name=test",
   success: function(response){
    alert(response);  // you will see the data in alert, you can use it    anywhere
   }
 });