Servlet如何擷取ajax中以json格式傳入的資料?__js

來源:互聯網
上載者:User
$('#but_json_json').click(function(){
            var j ={"name":"王","password":123456};
          
            $.ajax(
                    {
                        url:"servlet/JsonObject", //訪問路徑
                        type:"POST",    //訪問方式
                        data:j, //傳入服務端的資料
                        dataType:"json",
                        contentType:"application/json;charset=utf-8",
                        success : function(data){
                            alert(data);
                              alert(data.name);
                              
                               
                                alert(data.password);
                        }
                         
                    }       
                    );
        });


 
Servlet:


public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
 
     String user = request.getParameter("j");
    String name = request.getParameter("name");
    String password = request.getParameter("password");
     System.out.println(user);
    //JSON對象
    JSONObject jsonObject = new JSONObject();
    jsonObject.accumulate("password", password).accumulate("name", "www");
    response.setContentType("application/json");
    response.getWriter().write(jsonObject.toString());
}




現在的問題是,我可以從用戶端將Servlet中傳出的資料解析,如上面的name=www,但用戶端傳入的對象
(var j ={"name":"王","password":123456})在Servlet中取不到,好像是說要先去對象,我覺得應該是,
畢竟json提供了很多方法將取到到的json資料轉換為別的格式,但還是搞不懂。本人新手,第一次接觸,希望知道的朋友指定一下,感激不盡。




答:
我是這樣理解的  首先  對你要傳遞 給 伺服器(servlet)的 json序列化  用JSON.stringify,
確保我們傳遞的字串 符合 json 結構 ,由於我們傳遞的資料  是以流的形式  傳遞到伺服器,所以我們應該在
伺服器端  讀進緩衝區   在轉換字串輸出
 public String readJSONString(HttpServletRequest request){
   StringBuffer json = new StringBuffer();
   String line = null;
   try {
   BufferedReader reader = request.getReader();
   while((line = reader.readLine()) != null) {
   json.append(line);
   }
   }
   catch(Exception e) {
   System.out.println(e.toString());
   }
   return json.toString();
   }


}  之後  再轉成  jsonObject  對象。就可以取到值了
還有一點  要注意  編碼格式
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.