Ajax向前后台传递json和转换
? ? 学生管理系统MVC模式设计心得: ? jquery .ajax提交data数据格式jquery 的 data提交的数据类型为:
GET请求将会被附加到URL后面。防止自动转换。对象必须为key/value数据格式。 例如: 如果是数组,JQuery将自动为不同的值类型对应同一个名称。 例如: ? 也就是在JQuery中ajax提交data的数据格式为:
data: {get_id: get_item_id,filter:"item"},
? ?转载自:黄兵个人博客 -?jquery .ajax提交data数据格式 ? ? ? Ajax从后台返回前台的数据类型dataType参数: ?"xml": 返回 XML 文档,可用 jQuery 处理 ? json的传递: 将java的List类型返回前台时,先将List转换为包含 json对象的JSONArray数组再传回前端 需要的jar包:json-lib-2.4-jdk15.jar 及其依赖包 后台: 1 List<Student> student_list = new ArrayList<Student>(); 2
3 JSONArray jsonArray2 = JSONArray.fromObject(student_list); 4
5 //JSONArray: [{no:"123",name:"张三"},{no:"124",name:"李四"},{...},{...}]
6
7 PrintWriter printWriter = response.getWriter(); 8 printWriter.print(jsonArray2);
前台: function MyAjax(url,send_data,successFun,beforeSendFun,isAsync) { if (isAsync == null) isAsync = true; $.ajax({ url : url,type : "POST",data : send_data,async : isAsync,dataType:‘json‘,beforeSend : beforeSendFun,success : function(return_data) { successFun(return_data); },error : function(XMLHttpRequest,textStatus,errorThrown) { alert("请求处理失败"); } }); }
? Ajax前台向后台传递对象: 将js对象或者json对象转换为json字符串在Ajax传递,在后台中再将json字符串转换为json对象,再转换为java对象 1 var student={ 2 name:"abc", 3 age:12, 4 no:"123" 5 }; 6 7 console.log(student); 8 //将js对象转换为json字符串通过ajax传递,在后台中再将json字符串转换为json对象再转换为java对象 9 10 student = JSON.stringify(student); Ajax: 1 $.ajax({ 2 url : url, 3 type : "POST", 4 data : { 5 sendData:"传递下面的json字符串", 6 jsonStr: student 7 }, 8 async : isAsync, 9 dataType:data_type,10 beforeSend : beforeSendFun,11 success : function(return_data) { 12 successFun(return_data); 13 },14 error : function(XMLHttpRequest,errorThrown) { 15 alert("请求处理失败"); 16 } 17 }); 后台解析: String sendData = request.getParameter("sendData"); if (sendData.equals("传递下面json字符串")){ String jsonStr = request.getParameter("jsonStr"); JSONObject student_json= new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象 ? ? ? ? ? ? json格式转换: ? JS对象格式: 1 var obj = { 2
3 name: "饼干", 4
5 code: "PC-001", 6
7 price: 360, 8
9 getInfo: function () { 10
11 return this.name; 12
13 } 14
15 }
json对象: var obj = { name: "饼干",code: "PC-001",price: 360,getInfo: function () { return this.name; } } json字符串格式: jsonStr="{"a":"adc","b":123,"c":"哈哈"}" ? ? json对象,js对象,json字符串,java对象之间的常用转换: ? str=JSON.stringify(obj); json对象转换为json字符串
obj=JSON.parse(str); json字符串转换为json对象
? 1 var obj={ 2 a:"adc", 3 b:123, 4 c:"哈哈" 5 }; 6 console.log(obj);//js对象 7 8 obj=JSON.stringify(obj);//转换为json字符串 9 console.log(obj); 10 //obj="{"a":"adc","c":"哈哈"}" 一、JSON字符串转化为JSON对象
假设我们有如下?JSON?字符串需要转换为?JSON?对象。
?
?var jsonStr = ‘[{"CityId":18,"CityName":"西安"},{"CityId":53,"CityName":"广州"}]‘; 1,使用eval()函数进行转换
?
var jsonObj = eval(‘(‘ + jsonStr + ‘)‘);
alert(jsonObj[0]["CityName"]);
2,使用JSON.parse()方法进行转换var jsonObj = JSON.parse(jsonStr);
? 3,使用json2.js进行转换json2.js?提供了?json?的序列化和反序列化方法,完美支持各个浏览器。
?
var jsonObj = JSON.parse(jsonStr);
4,使用jQuery进行转换如果我们项目中有使用?jQuery,那么直接使用?$.parseJSON()?方法即可,而且可以确保各个浏览器的兼容性。
?
var jsonObj = $.parseJSON(jsonStr);
? ? 二、JSON对象转化为JSON字符串假设我们有如下的对象:
?
?
var jsonObj = { "CityId":"18","CityName":"西安2" }; ? 1,使用JSON.stringify()方法进行转换该方法不支持较老版本的IE浏览器,比如:ie8(兼容模式)、ie7、ie6。
?
运行结果如下: var jsonStr = JSON.stringify(jsonObj); alert(jsonStr); 2,使用json2.js进行转换下载使用?json2.js,具体地址参考前面内容。使用方式和上面一样。
?
var jsonStr = JSON.stringify(jsonObj);
3,使用jQuery进行转换首先对?jQuery?进行扩展,增加个?json?对象转字符串的方法。jQuery.extend({ stringify : function stringify(obj) { var t = typeof (obj); if (t != "object" || obj === null) { // simple data type if (t == "string") obj = ‘"‘ + obj + ‘"‘; return String(obj); } else { // recurse array or object var n,v,json = [],arr = (obj && obj.constructor == Array); for (n in obj) { v = obj[n]; t = typeof(v); if (obj.hasOwnProperty(n)) { if (t == "string") v = ‘"‘ + v + ‘"‘; else if (t == "object" && v !== null) v = jQuery.stringify(v); json.push((arr ? "" : ‘"‘ + n + ‘":‘) + String(v)); } } return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}"); } } });
?
使用方式如下:
?
var jsonStr = $.stringify(jsonObj);
? ? ? ? ? java对象与json对象间的相互转换1.将json字符串转换java对象 1 JSONObject jsonObj = new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象 2
3 //将json对象转换为java对象
4 Student student =(Student)JSONObject.toBean(jsonObj,Student.class);//将json对象转换为Student对象
1.将java对象转换json字符串 1 //先将java对象转换为json对象,在将json对象转换为json字符串
2 JSONObject json = JSONObject.fromObject(obj);//将java对象转换为json对象
3
4 String str = json.toString();//将json对象转换为字符串
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |