服务器和客户端数据传输的方式:xml & json
介绍:
xml:
可拓展的标签元 一般形式为:
json:
轻量级的数据交换格式。 一般形式为:
{" ":" "," ":" "} 数组[{ },{ }]
用法 :----------------请求转发list集合--------------------------------Servelet层
在Servlet层内有一个list集合
List<School> list = schoolDao.findSchool(cid);
xml:
//创建一个XStream XStream xstream = new XStream(); //替换类的路径为另一个字符串: 将显示school.class这个类的路径替换为school xstream.alias("school",School.class); //将类的某个属性设置成xml格式中的id: 将School这个类中的sid设置成它的id: <school id="sid"> xstream.useAttributeFor(School.class,sid); //将类对象序列化为xml格式 String xml = xstream.toXML(list); //设置响应类型为text/xml response.setContentType("text/xml,charset=utf-8"); response.getWriter().write(xml); //将xml格式反序列化为对象格式 Object obj = xstream.fromXML(xml);
json:
//JSONArray-------------->得到json的数组 [{},{},{}] 的形式 JSONArray jsonlist = JSONArray.fromObject(list); //JSONObject------------->得到一个简单的json {"":"","":""} 的形式 JSONObject json = JSONObject.fromObject(new School(1,"南方中学")); String jlist = jsonlist.toString(); response.setContentType("text/html;charset=utf-8"); response.getWriter().write(jlist);
用法:------------------得到list集合里的元素的值--------------------------------JS
XML:
/*得到的data格式: data是基于list的 * <list> * <school sid="1"> * <sname>湖南工业大学</sname> * </school> * </list> */ $.ajax({ .... success:function(data){ $(data).find("school").each(function(){ //找到每个school元素并且都执行function方法 var sid = $(this).attr("sid"); var sname = $(this).children("sname").text(); // 可以用.find("sname")区别在 上一章/.....(2)中 有讲 }) } });
json:
/*返回的data格式为: !!!要记得先设置dataType:"json", * [ * { * "sid":12, * "sname":"湖南林业科技大学" * } * ] */ $(function(){ $.ajax({ ... dataType:"json", success:function(data){ $(data).each(function(index,schs){ //直接遍历data 并对其每个{}都执行function方法 //可以自己console.log(index,schs)看看------》index是索引,schs是集合中的每个元素 console.log(index,schs); //json的格式就很简单 var sid = schs.sid; var sname = schs.sname; }) } }); })
Attention:
在$.ajax({});
最后那个 success:function(data){
不能写$(this).find("...") this所指的是整个$.ajax的内容 m.fn.init [{…}] 而应该写成$(data).find("...")...
}