AJAX和JSON
我还能在学…
一、概述
1. 概念
- 1)AJAX:ASynchronous JavaScript And XML,异步的javascript和xml
- 2)异步和同步:客户端和服务器相互通信的基础上
- 同步:客户端必须等待服务器响应
- 异步:客户端不需要等待服务器响应
二、原生JS实现方式
了解
-
1)创建核心对象
-
var xmlhttp; if(window.XMLHttpRequest){ //code for ie7+, fixfor, chrome, opera, safari xmlhttp = new XMLHttpRequest(); } else{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
-
-
2)建立连接
-
/* 参数: 1.请求方式:get、post get:请求参数在url后拼接,send()方法为空参 post:请求参数在send()方法,形参中定义 2.请求url路径 3.同步、或异步:true=异步,false=同步 */ xmlhttp.open("GET", "ajaxServlet?username=tom", true);
-
-
3)发送请求
-
xmlhttp.send();
-
-
4)接收并处理响应结果
-
/* 获取方式:xmlhttp.responseText 什么时候获取?当服务器响应成功后 */ //当xmlhttp对象的就绪状态改变时,会触发事件onreadystatechange xmlhttp.onreadystatechange = function()}{ //判断就绪状态是否为4,并且判断响应码是否为200 if(xmlhttp.readyState==4 && xmlhttp.status==200){ //获取响应结果 var responseText = xmlhttp.responseText; } }
-
三、JQ实现方式
1. $.ajax()
-
1)语法:
$.ajax({键值对});
-
$.ajax({ url:"ajaxServlet", //请求路径 type:"post", //请求类型 //data:"username=jack", //请求参数 data:{"username":"jack","age":23}, success:function(data){ //请求响应成功后的回调函数。data接收服务器响应的数据 }, error:function(){ //请求响应出现错误的回调函数 }, dataType:"text" //设置接收数据格式 });
-
2. $.get()
-
1)语法:
$.get(url, [data], [callback], [type])
- url:请求路径
- data:请求参数
- callback:回调函数
- type:响应结果类型
-
2)例如:
-
$.get("ajavServlet", {username:"rose"}, function(data){ }, "text");
-
3. $.post()
同上
四、JSON
1. 简介
- JSON:JavaScript Object Notation,javascript对象表示法
- JSON现在多用于存储和交换文本信息的语法。JSON比XML更小、更快
2. 语法
- 1)基本规则
- 数据在名称 / 值对中:json数据是由键值对构成的
- 键:用引号,也可以不用
- 值:数字、字符串、逻辑值、数组、对象、null
- 数据由逗号分隔:多个键值对逗号分隔
- 花括号表示对象:
- 方括号表示数组
- 数据在名称 / 值对中:json数据是由键值对构成的
- 2)获取数据
json对象.键名
json对象["键名"]
数组对象[索引]
3. JSON数据和Java对象转换
- json解析器:
- Jsonlib、Gson、fastjson、jackson
① json转java对象
- 1)使用步骤
- 导入jackson的jar包
- 创建jackson核心对象:ObjectMapper
- 调用ObjectMapper相关方法转化
readValue(json字符串, Class)
:返回值为Class对象
② java对象转json
-
1)使用步骤
-
导入jackson的jar包
-
创建jackson核心对象:ObjectMapper
-
调用ObjectMapper相关方法转化
-
//创建jackson核心对象:ObjectMapper ObjectMapper mapper = new ObjectMapper(): /* 转换方法: writeValue(参数1,obj): 参数1: File:将obj对象转换为json字符串,并保存到指定文件 Writer:将obj对象转换为json字符串,并将json数据写入字符输出流 OutputStream:将obj对象转换为json字符串,并将json数据写入字节输出流 writeValueAsString(obj):将对象转换为jason字符串 */ mapper.write();
-
-
2)注解
@JsonIgnore
:排除属性。@JsonFormat(pattern = "")
:属性值格式化。针对日期格式
-
3)复杂的java对象
- List:转换为jaon为数组
- Map:与对象格式一致