2014-02-24 68 views
0

我正在爲商店科學出版物構建一個Web應用程序。我用過MySQL,JSP,jQuery和JAVA。jQuery - Servlet的AJAX調用

我有一個JSP頁面內的表單,像這樣:

<form method="get"> 
    <input type="text" id="code"> 
    <button onclick="request()">Search</button> 
</form> 

功能請求()是:

function request() { 
    var code = $('#code').val(); 
    var data='code='+code; 
    $.ajax({ 
      url: "Servlet", 
      type: "GET", 
      data: data, 
      success: function(){ 
       alert("success"); 
      }, 
      error:function(){ 
       alert("failure"); 
      } 
     }); 
}; 

該servlet做一些東西,然後保存的結果集在請求對象中查詢並將結果轉發到索引

request.setAttribute("result", resultSet); 
RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("/index.jsp"); 
dispatcher.forward(request, response); 

的index.jsp包含:

<% if(request.getAttribute("result")!=null){ %> 
     <jsp:include page="table.jsp" /> 
    <%}%> 

檢查,如果結果集已被填充,則包括table.jsp,頁面掃描的結果集,並把該值在表中。

此代碼無效,有人可以幫我嗎? 1查詢運行正確 2- jQuery是正確調用

if(request.getAttribute("result")) 

總是空。

+0

看來你是混合了阿賈克斯和同步處理。通常,ajax響應將被附加到servlet響應流。 – kosa

+0

而不是'request.setAttribute(「result」,resultSet);'嘗試使用session,'session.setAttribute(「result」,resultSet);'。 –

+0

Nambari你是對的!我混合了兩個不太一樣的概念。我回到了表單中簡單的「動作」,它調用了servlet。謝謝。 – sim186

回答

0

儘量讓你的的Servlet延伸HttpServlet的,並嘗試如下:

public class TestServlet extends HttpServlet { 

    private static final long serialVersionUID = 1L; 


    public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     doPost(request,response); 
    } 


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

     response.setContentType("text/html"); 
     response.setCharacterEncoding("UTF-8"); 
     request.setAttribute("result", "value"); 
     request.getRequestDispatcher("/index.jsp").forward(request, response); 
    } 

}