$('#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);
}
}
);
});
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数据转换为别的格式,但还是搞不懂
可以用JSONObject.fromObject()方法将字符串转换为json的对象,再用getInt(key),getString(Key)取值就行了。
在 JavaScript中, json数据类型:
(1) 对象 {name:"zhangsan", pwd:"123"}
(2) 数组 []
使用 $.ajax()方法, 的 data 参数, 后面就是跟的 json对象.
$.ajax({
data:j
});
等价于
$.ajax({
data:{"name":"王","password":123456}
});
在server(服务器端) 是获取不到 对象j的.
因为Ajax已经把 json对象j 转换为 name=王&password=123456
如果你用火狐浏览器的调试工具 Firebug, 就能看到 Ajax的请求.
contentType: "application/json; charset=utf-8", 提交的用request.getParameter("xxx"); 是获取不到的,需要contentType: "application/x-www-form-urlencoded"