json是一种从服务器端到js中传输数据的数据格式,这里就不多说了。就小谈一下,jquery中用json传输数据,应用到ajax中的例子吧,开发中会用到。
一、准备工作。
1、使用json需要用到几个包:commons-beanutils-1.8.0.jar、commons-collections.jar、commons-lang-2.4.jar、commons-logging.jar、ezmorph-1.0.6.jar、json-lib-2.3-jdk15.jar。
2、jquery的脚本文件:jquery.js。
二、这里就是用AJAX访问后台的Servelt,如果是Struts,则同理,将url改一下,即可。
1、以json传输Object类型的数据。
jsp主要代码如下:
<script type="text/javascript" src="js/jquery-1.8.0.js"></script>
<script type="text/javascript">
function test(){
var myDate = new Date();
var mytime=myDate.getTime(); //获取当前时间
$.getJSON(
"<%=basePath%>SelectServlet" ,
"tid=" +mytime, //带一个参数过去,可以解决ajax缓存的问题,如果后台需要,这里还可以带别的的参数过去,用&分开就行了
function(msg) {
alert("name:"+msg.stuName);
}
);
}
</script>
</head>
<body>
<input type="button" onclick="test()" value="按钮">
</body>
Student对象如下:
public class Student {
private int stuId;
private String stuName;
public int getStuId() {
return stuId;
}
public void setStuId(int stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
}
SelectServlet中的doGet方法如下:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
//将Student转换成JSON对象,传递到前台
Student stu = new Student();
stu.setStuId(1);
stu.setStuName("gaojiang");
JSONObject obj = JSONObject.fromObject(stu);
out.print(obj);
out.flush();
out.close();
}
运行效果如下:
2、以json传输List<Map>类型的数据。
jsp代码如下:
<script type="text/javascript" src="js/jquery-1.8.0.js"></script>
<script type="text/javascript">
function test(){
$.getJSON(
"<%=basePath%>SelectServlet" ,
function(msg) {
var str = "";
for(var i=0;i<msg.length;i++){
str+=msg[i].key+",";
}
alert("str:"+str);
}
);
}
</script>
</head>
<body>
<input type="button" onclick="test()" value="按钮">
</body>
Servlet代码如下:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
List<Map<String,String>> list = new LinkedList<Map<String,String>>();
for(int i=0;i<5;i++){
Map<String,String> map = new HashMap<String, String>();
map.put("key","value"+i);
list.add(map);
}
//转换成JSON对象,传到前台去
JSONArray obj = JSONArray.fromObject(list);
out.print(obj);
out.flush();
out.close();
}
运行效果如下: