2014年3月29日 星期六

Servlet using ajax

今天試了在前端使用 jQuery 的 ajax 傳參數給 controller 並由 controller 回傳一個值給前端頁面,

前端 js(jQuery) 中的寫法是這樣:

$.ajax({
    url: 'batchMonitor.do?method=saveTest',
    dataType: "html",
    type: "post",
    data: {
             data1: $("#input1").val()
      },
    error: function(xhr) {
      alert('Ajax request 發生錯誤');
    
    },
    success: function(response) {
      alert(response);     
  }});


其中 url 這邊是設定成 controller 的名稱跟要處理這個 ajax 的方法,
data 區段指的是要傳一個參數叫做 data1 的給 server 端

而在 controller 端的寫法則是下面這樣:


public void saveTest(final HttpServletRequest req, final HttpServletResponse res) throws IOException {

        String getFromClientTest = req.getParameter("data1");
        logger.trace("saveTest:{} ", getFromClientTest);
      
        res.setContentType("text/html");
        res.setHeader("Cache-Control", "no-cache");
        res.getWriter().write(getFromClientTest);

    }

因為在前端 jsp 已經設定了 data ,所以可以用 HttpServletRequest 的 getParameter去接 設定的參數(值則為後面那個$("#input1").val())
記得要設定回傳的 content type, content type 也要跟前端的 dataType 一樣型態才可以。

沒有留言: