ajax(2)
来源:互联网 发布:linux cpuinfo 编辑:程序博客网 时间:2024/06/06 01:10
1.json 本质:字符串,具有特定的描述规格
json串的描述规格:
*java:new User(1,"c35",true); new User(2,"c36",false)
json:{"id":1,"name":"c35","gender":true} -- {"id":2,"name":"c36","gender":false}
*java:String[]{"c35","c36","c37"}; Object[]{123,true,"c35"}
json:["c35","c36","c37"] -- [123,true,"c35"]
*java:Map-->【name:"c35",age:18,gender:true】
json:{"name":"c35","age":18,"gender":true}
*java:List<object>【123,"c35",Map【name:"c35",age:18,gender:true】 】
json:[123,"c35",{"name":"c35","age":18,"gender":true}]
class User{
id
name
gender
}
======================================================================================
2.ajax中json的使用思路:
目的:在服务器和客户端之间有更大的数据量的通信
1.在服务器端将java对象转换成json:
gson.jar:java-->json
//通过gson.jar的支持将java对象user转换成json
GsonBuilder gsonB=new GsonBuilder();
Gson gson=gsonB.create();
//利用gson将java-->json
String jsonStr=gson.toJson(user);
2.在客户端解析json,从中获取数据
jquery:$.parseJson(json);
var a='[{"id":1,"name":"c35","age":18},"c35",true,123]';
var aObj=$.parseJSON(a);//[{"id":1,"name":"c35","age":18},"c35",true,123]
aObj[0].id;
aObj[0].name;
aObj[2];
数据通信载体:
json:轻便 可读性较差
xml:重 可读性好
<user>
<id name="xxx">35</id>
<name>c35</name>
<gender>true</gender>
</user>
======================================================================================
3.ajax流程简化
$.ajax({
type:"post",
url:"${pageContext.request.contextPath}/cascade35",
data:"sheng="+$("#s>option:selected").val(),
success:function(ret35){//服务器的响应值
//清空
$("#city").empty();
for(var i=0;i<ret35.length;i++){
$("#city").append("<option>"+ret35[i]+"</option>");
}
},
dataType:"json"//指明返回为json,则ajax方法会自动解析响应值
});
$.get("${pageContext.request.contextPath}/cascade35",
{sheng:$("#s>option:selected").val()},
function(ret35){//ret35:响应值
//清空
$("#city").empty();
for(var i=0;i<ret35.length;i++){
$("#city").append("<option>"+ret35[i]+"</option>");
}
},
"json"
);
$.post("${pageContext.request.contextPath}/cascade35",
{sheng:$("#s>option:selected").val()},
function(ret35){//ret35:响应值
//清空
$("#city").empty();
for(var i=0;i<ret35.length;i++){
$("#city").append("<option>"+ret35[i]+"</option>");
}
},
"json"
);
=====================================================================================
4.ajax跨域
协议:主机:端口 域的唯一标示
http://127.0.0.1:8989 project1 发起ajax请求,请求project2
http://127.0.0.1:9090 project2
http://192.168.1.123:9090
情景:
http://localhost:8989 ajax1 发起ajax请求 请求ajax2
http://localhost:9999 ajax2
需要在ajax2中为ajax1添加访问权限:
//为ajax1增设访问权限
res.addHeader("Access-Control-Allow-Origin","http://localhost:8989");
=====================================================================================
5.json回环问题解决:在将java对象转换json时,出现的死循环现象
class User{
int id;
String name;
Address address;
}
class Address{
int id;
String city;
User user;
}
User user=new User(1,"c35");
Address addr=new Address(1,"bj");
user.setAddress(addr);
addr.setUser(user);
Gson gson;
gson.toJson(user);==>{"id":1,"name":"c35","address":{"id":1,"city":"bj","user":{}}}
gson.toJson(addr);==>{"id":1,"city":"bj","user":{"id":1,"name":"c35","address":{}}}
*5.1 解决方案一:排除策略:
GsonBuilder gsonB=new GsonBuilder().setExclusionStrategies(new ExclusionStrategy(){
//指定要排除的属性
public boolean shouldSkipField(FieldAttributes field) {
//获取当前要序列化到json串中的属性名
String name=field.getName();
if("user".equals(name)){
return true;//排除此属性
}
return false;
}
public boolean shouldSkipClass(Class<?> arg0) {
// TODO Auto-generated method stub
return false;
}
});
Gson gson=gsonB.create();
*5.2 解决方案二:expose策略,指定哪些属性参加json的生成
*在参加json生成的属性前,添加Expose注解:
public class Address {
@Expose
private Integer id;
@Expose
private String city;
...
*创建Gson对象:
GsonBuilder gsonB=new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
Gson gson=gsonB.create();
=====================================================================================
json串的描述规格:
*java:new User(1,"c35",true); new User(2,"c36",false)
json:{"id":1,"name":"c35","gender":true} -- {"id":2,"name":"c36","gender":false}
*java:String[]{"c35","c36","c37"}; Object[]{123,true,"c35"}
json:["c35","c36","c37"] -- [123,true,"c35"]
*java:Map-->【name:"c35",age:18,gender:true】
json:{"name":"c35","age":18,"gender":true}
*java:List<object>【123,"c35",Map【name:"c35",age:18,gender:true】 】
json:[123,"c35",{"name":"c35","age":18,"gender":true}]
class User{
id
name
gender
}
======================================================================================
2.ajax中json的使用思路:
目的:在服务器和客户端之间有更大的数据量的通信
1.在服务器端将java对象转换成json:
gson.jar:java-->json
//通过gson.jar的支持将java对象user转换成json
GsonBuilder gsonB=new GsonBuilder();
Gson gson=gsonB.create();
//利用gson将java-->json
String jsonStr=gson.toJson(user);
2.在客户端解析json,从中获取数据
jquery:$.parseJson(json);
var a='[{"id":1,"name":"c35","age":18},"c35",true,123]';
var aObj=$.parseJSON(a);//[{"id":1,"name":"c35","age":18},"c35",true,123]
aObj[0].id;
aObj[0].name;
aObj[2];
数据通信载体:
json:轻便 可读性较差
xml:重 可读性好
<user>
<id name="xxx">35</id>
<name>c35</name>
<gender>true</gender>
</user>
======================================================================================
3.ajax流程简化
$.ajax({
type:"post",
url:"${pageContext.request.contextPath}/cascade35",
data:"sheng="+$("#s>option:selected").val(),
success:function(ret35){//服务器的响应值
//清空
$("#city").empty();
for(var i=0;i<ret35.length;i++){
$("#city").append("<option>"+ret35[i]+"</option>");
}
},
dataType:"json"//指明返回为json,则ajax方法会自动解析响应值
});
$.get("${pageContext.request.contextPath}/cascade35",
{sheng:$("#s>option:selected").val()},
function(ret35){//ret35:响应值
//清空
$("#city").empty();
for(var i=0;i<ret35.length;i++){
$("#city").append("<option>"+ret35[i]+"</option>");
}
},
"json"
);
$.post("${pageContext.request.contextPath}/cascade35",
{sheng:$("#s>option:selected").val()},
function(ret35){//ret35:响应值
//清空
$("#city").empty();
for(var i=0;i<ret35.length;i++){
$("#city").append("<option>"+ret35[i]+"</option>");
}
},
"json"
);
=====================================================================================
4.ajax跨域
协议:主机:端口 域的唯一标示
http://127.0.0.1:8989 project1 发起ajax请求,请求project2
http://127.0.0.1:9090 project2
http://192.168.1.123:9090
情景:
http://localhost:8989 ajax1 发起ajax请求 请求ajax2
http://localhost:9999 ajax2
需要在ajax2中为ajax1添加访问权限:
//为ajax1增设访问权限
res.addHeader("Access-Control-Allow-Origin","http://localhost:8989");
=====================================================================================
5.json回环问题解决:在将java对象转换json时,出现的死循环现象
class User{
int id;
String name;
Address address;
}
class Address{
int id;
String city;
User user;
}
User user=new User(1,"c35");
Address addr=new Address(1,"bj");
user.setAddress(addr);
addr.setUser(user);
Gson gson;
gson.toJson(user);==>{"id":1,"name":"c35","address":{"id":1,"city":"bj","user":{}}}
gson.toJson(addr);==>{"id":1,"city":"bj","user":{"id":1,"name":"c35","address":{}}}
*5.1 解决方案一:排除策略:
GsonBuilder gsonB=new GsonBuilder().setExclusionStrategies(new ExclusionStrategy(){
//指定要排除的属性
public boolean shouldSkipField(FieldAttributes field) {
//获取当前要序列化到json串中的属性名
String name=field.getName();
if("user".equals(name)){
return true;//排除此属性
}
return false;
}
public boolean shouldSkipClass(Class<?> arg0) {
// TODO Auto-generated method stub
return false;
}
});
Gson gson=gsonB.create();
*5.2 解决方案二:expose策略,指定哪些属性参加json的生成
*在参加json生成的属性前,添加Expose注解:
public class Address {
@Expose
private Integer id;
@Expose
private String city;
...
*创建Gson对象:
GsonBuilder gsonB=new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
Gson gson=gsonB.create();
=====================================================================================
0 0
- ajax(2)
- AJAX(2)
- ajax-2
- ajax(2)
- ajax(2)
- AJAX 笔记2:JQuery AJAX
- Ajax&Json<2>Ajax核心
- ajax入门 ajax使用方式2-ajax基础
- Ajax&Json<2>Ajax核心2
- AJAX学习(2)jQuery中的Ajax
- Ajax how to (2)
- AJAX 基础知识2
- Ajax Patterns 读书笔记 --2
- Ajax相关(2)
- Struts+Ajax 技术(2)
- AJAX 技术简介[2]
- Ajax入门(2)
- Ajax 学习笔记(2)
- HDU 5012 Dice (2014年西安赛区网络赛F题)
- 35选7彩票自选系统(附加实现效果Java源代码)
- (Git初步入门)一篇三分钟就可以看完的Git教程
- 图表配置(Chart)
- 转载 opencv Grabcut border matting
- ajax(2)
- 关于设置applicationIconBadgeNumber提醒数字的问题
- Hbase写数据,存数据,读数据的详细过程
- MysqL Blob 实例代码
- MyEclipse中的快捷键组合
- 网络请求配置
- Git添加空文件夹的方法
- poj 1904 King's Quest 【建模 求解SCC】
- 【学习日记】集合框架知识点总结(1)--Collection