Servlet如何获取ajax中以json格式传入的数据?

来源:互联网 发布:数据字典 编辑:程序博客网 时间:2024/06/03 12:23
$('#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  对象。就可以取到值了
还有一点  要注意  编码格式
0 0
原创粉丝点击