简介
一种用于网页异步请求的技术, 用于与服务器进行异步交互,以及局部网页的刷新.
ajax_JS的GET请求使用步骤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 //在JavaScript中使用函数或绑定事件 //1. 创建一个用于异步请求的对象 var xhr = new XMLHttpRequest(); //2. 设置请求的方式 以及请求地址 xhr.openxhr.open("GET","地址?参数列表"); //3. 设置请求结果产生时 的 处理函数 //(此函数在一次 请求中会执行多次 , 当请求状态每改变一次, 则触发一次) xhr.onreadystatechange = function(){ //4. 获取请求状态码, 根据状态码判断请求到了哪一步. if(xhr.readyState == 4){ //5. 判断响应的状态码 (404资源找不到 , 500服务器内部错误 , 200成功 等等) if(xhr.status == 200){ //6. 获取到响应体(xhr.responseText) if(xhr.responseText == 1){ //注册成功 layer.close(i); layer.msg("恭喜你, 注册成功"); }else{ //注册失败 layer.close(i); layer.msg("很遗憾, 注册失败"); } }else{ //错误的提示 layer.close(i); layer.msg("很遗憾,请检查您的网络"); } } } //7. 设置请求头部 xhr.setRequestHeader("content-type","application/x-www-form-urlencoded"); //8. 将请求发送 (参数列表格式: 与GET请求?后的格式一致) xhr.send("uname="+uname+"&upass="+upass);
注意:
1 2 3 4 5 6 7 xhr.readyState : 表示请求状态 , 值: 0 : 请求初始化中 1 : 请求正在发送 2 : 请求发送完毕 3 : 服务器开始响应 4 : 响应完毕,连接已断开,回复的内容已经得到了
ajax_JS的POST请求使用步骤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 //在JavaScript中使用函数或绑定事件 //1. 创建一个用于异步请求的对象 var xhr = new XMLHttpRequest(); //2. 设置请求的方式 以及请求地址 xhr.openxhr.open("POST","地址"); //3. 设置请求结果产生时 的 处理函数 //(此函数在一次 请求中会执行多次 , 当请求状态每改变一次, 则触发一次) xhr.onreadystatechange = function(){ //4. 获取请求状态码, 根据状态码判断请求到了哪一步. if(xhr.readyState == 4){ //5. 判断响应的状态码 (404资源找不到 , 500服务器内部错误 , 200成功 等等) if(xhr.status == 200){ //6. 获取到响应体(xhr.responseText) if(xhr.responseText == 1){ //注册成功 layer.close(i); layer.msg("恭喜你, 注册成功"); }else{ //注册失败 layer.close(i); layer.msg("很遗憾, 注册失败"); } }else{ //错误的提示 layer.close(i); layer.msg("很遗憾,请检查您的网络"); } } } //7. 设置请求头部 xhr.setRequestHeader("content-type","application/x-www-form-urlencoded"); //8. 将请求发送 (参数列表格式: 与GET请求?后的格式一致) xhr.send("uname="+uname+"&upass="+upass);
注意:
1 2 3 4 5 6 7 xhr.readyState: 表示请求状态,值: 0 : 请求初始化中 1 : 请求正在发送 2 : 请求发送完毕 3 : 服务器开始响应 4 : 响应完毕 ,连接已断开, 回复的内容已经得到了
Ajax跨域实现
如果访问服务器上的地址,我们要在servlet的代码中,在响应之前加入如下两行代码,然后运行把生成的代码放在服务器上,即可实现:
response.addHeader("Access-Control-Allow-Origin","*");
response.addHeader("Access-Control-Allow-Methods","GET,POST");
通过GSON.jar更快速的生成JSON格式字符串
步骤:
1.引入gson.jar文件
2.在需要将对象转为JSON字符串的位置, 加入如下格式代码即可:
String json = new Gson().toJSON(对象);
对象:
String json2 = new Gson().toJson(u);
集合:
ArrayList<User30> data = new ArrayList<>();
for(int i=0;i<100;i++) {
User30 u = new User30(1001+i, "dsg"+i, "123"+i);
data.add(u);
}
String json = new Gson().toJson(data);
System.out.println(json);
通过GSON.jar将JSON格式字符串,转换为对象,并取出其中属性.
前提条件:
1.JSON格式的字符串, 格式必须正确.
2.JSON字符串中的属性 必须要与准备转换类型属 一致.
要将如下字符串转换为对象,必须存在属性匹配的类,例如:
字符串:
{
"name":"xxx",
"age":18
}
类:
class 类名{
private String name;
private int age;
get/set...
}
格式:
1.引入gson.Jar包
2.在需要转换的位置, 加入如下代码:
对象名 = new Gson().fromJson(JSON字符串,对象类型.class);
案例:
String json = "{\"id\":10001,\"username\":\"zhangsan\",\"password\":\"123456\"}";
User30 u = new Gson().fromJson(json, User30.class);
System.out.println(u.getUsername());
通过GSON.jar将JSON数据,转换为集合
1 2 3 4 5 6 7 8 9 String json = "{\r\n" + "\"resultcode\":\"200\",\r\n" + "\"reason\":\"成功的返回\",\r\n" + "\"result\":{\r\n" + " \"area\":\"浙江省温州市平阳县\",\r\n" + " \"sex\":\"男\",\r\n" + " \"birthday\":\"1989年03月08日\"\r\n" + "}\r\n" + "}";
Map
Map<String,Object> map = new Gson().fromJson(JSON字符串,Map.class);
List
List<Object> list = new Gson().fromJson(JSON字符串,List.class);