一、Ajax简介
Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指⼀种创建交互式⽹⻚应⽤的⽹⻚开发技术。
Ajax 是⼀种⽤于创建快速动态⽹⻚的技术。
Ajax 是⼀种在⽆需重新加载整个⽹⻚的情况下,能够更新部分⽹⻚的技术。
通过在后台与服务器进⾏少量数据交换,Ajax 可以使⽹⻚实现异步更新。这意味着可以在不重新加载整个⽹⻚的情况下,对⽹⻚的某部分进⾏更新。
传统的⽹⻚(不使⽤Ajax)如果需要更新内容,必须重载整个⽹⻚⻚⾯。
二、同步与异步
1、同步:发送⼀个请求,需要等待响应返回,然后才能够发送下⼀个请求,如果该请求没有响应,不能发送下⼀个请求,客户端会处于⼀直等待过程中。
2、异步:发送⼀个请求,不需要等待响应返回,随时可以再发送下⼀个请求,即不需要等待。
三、应用场景
1、在线视频、直播平台等…评论实时更新、点赞、⼩礼物、…
2、会员注册时的信息验证,⼿机号、账号唯⼀
3、百度关键搜索补全功能
实现代码:
$.ajax({
url:"",//访问的地址
data:{
Name:”张三”,},//参数
type:"post/get",//请求类型
async:true,//是否同步,异步。 默认为true(异步)一般不建议写
dataType:"text",//返回值的类型 text xml html json
success:function(obj){//成功的回调函数
},
error:function(){//失败的回调函数 一般不写
}
})
注意事项:
1、每个属性后都要跟随⼀个英⽂逗号,最后⼀个不⽤。
2、每⼀个属性都是键值对的形式存在,中间⽤英⽂冒号:隔开
3、data:{} 是⼀个特殊的写法,值是⼀个{},⾥⾯使⽤键值对存储
例如:data:{“键1”:值1, “键2”:值2, “键3”:值3}
4、以上属性没有先后顺序要求
Get请求方式
$.get(url, [data], [callback], [type]);
Url:请求地址
Data:请求参数
Callback: 回调函数
Type: 返回类型
$.get() 的第一个参数是我们希望请求的 URL(“demo_test.asp”)。第二个参数是回调函数。第一个回调参数存有被请求页面的内容,第二个回调参数存有请求的状态。
$("button").click(function(){
$.get("demo_test.asp",function(data,status){
alert("Data: " + data + "\nStatus: " + status);
});
});
Post请求
$.post(url, [data], [callback], [type]);
Url:请求地址
Data:请求参数
Callback: 回调函数
Type: 返回类型
$.post() 的第一个参数是我们希望请求的 URL (“demo_test_post.asp”)。然后我们连同请求(name 和 city)一起发送数据。“demo_test_post.asp” 中的 ASP 脚本读取这些参数,对它们进行处理,然后返回结果。第三个参数是回调函数。第一个回调参数存有被请求页面的内容,而第二个参数存有请求的状态
$("button").click(function(){
$.post("demo_test_post.asp",
{
name:"Donald Duck",
city:"Duckburg"
},
function(data,status){
alert("Data: " + data + "\nStatus: " + status);
});
});
区别
相同点:都是jQuery封装的⽅法实现异步交互。
不同点: $.ajax()是jQuery的第⼀次封装,使⽤时稍显麻烦,但是功能强⼤,覆盖了get和post请求,有错误调试能⼒,写法顺序可以改变。
$.post()和$.get()是jQuery Ajax的第⼆次封装,由于$.Ajax()写法过于臃肿,简化为$.post()和$.get(),功能是相同的没有区别。但是写法要求更⾼,顺序不能改变。
案例案例需求: 校验⽤户名唯⼀在⽤户注册⻚⾯,输⼊⽤户名,当⽤户名输⼊框失去焦点时,发送异步请求,将输⼊框的⽤户名传递给服务器端进⾏是否存在的校验
<%@ page contentType="text/html;charset=UTF-8" language="java" %>Title ⽤户名:
1.6、JQuery的通用方式实现AJAX
核心语法:$.ajax({name:value,name:value,…});
url:请求的资源路径。
async:是否异步请求,true-是,false-否 (默认是 true)。
data:发送到服务器的数据,可以是键值对形式,也可以是 js 对象形式。
type:请求方式,POST 或 GET (默认是 GET)。
dataType:预期的返回数据的类型,取值可以是 xml, html, js, json, text等。
success:请求成功时调用的回调函数。
error:请求失败时调用的回调函数。
代码实现
2、异步:发送⼀个请求,不需要等待响应返回,随时可以再发送下⼀个请求,即不需要等待。
异步:服务器端在处理过程中,可以进行其他操作。
GET 方式实现:.post();
url:请求的资源路径。
data:发送给服务器端的请求参数,格式可以是key=value,也可以是 js 对象。
callback:当请求成功后的回调函数,可以在函数中编写我们的逻辑代码。
type:预期的返回数据的类型,取值可以是 xml, html, js, json, text等。
通用方式实现:$.ajax();
url:请求的资源路径。
async:是否异步请求,true-是,false-否 (默认是 true)。
data:发送到服务器的数据,可以是键值对形式,也可以是 js 对象形式。
type:请求方式,POST 或 GET (默认是 GET)。
dataType:预期的返回数据的类型,取值可以是 xml, html, js, json, text等。
success:请求成功时调用的回调函数。
error:请求失败时调用的回调函数。
1.6json
JSON回顾
JSON(JavaScript Object Notation):是一种轻量级的数据交换格式。
它是基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于计算机解析和生成,并有效的 提升网络传输效率。
FastJson是啊里巴巴的的开源库,用于对JSON格式的数据进行解析和打包。
1.1.1.JSON 与 JS 对象的关系
很多人搞不清楚 JSON 和 JS 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:
JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
如
1 var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
1 var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串
1.1.2.JSON 和 JS 对象互转
要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法:
1 var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}
要实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法:
1 var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'
特点如下:
能够支持将java bean序列化成JSON字符串,也能够将JSON字符串反序列化成Java bean。
顾名思义,fastjson操作 JSON的速度是非常快的。
无其他包的依赖。
使用比较方便。
java类转换为json字符串:
//简单对象转换
User user = new User("root", "123456");
//调用toJSONString()
String userJson = JSON.toJSONString(user);
System.out.println("java类转换为json串:" + userJson);
//集合转json串 User user1 = new User("zhangsan", "123456"); User user2 = new User("lisi", "000"); Listusers = new ArrayList (); users.add(user1); users.add(user2); //调用toJSONString() String usersjson = JSON.toJSONString(users); System.out.println("集合转json串:" + usersjson); //复杂java类转换对象 UserGroup userGroup = new UserGroup("userGroup", users); //调用toJSONString() String userGroupJson = JSON.toJSONString(userGroup); System.out.println("复杂java类转换json串:" + userGroupJson);
结果
java类转换为json串:{"password":"123456","username":"root"}
集合转json串:[{"password":"123456","username":"zhangsan"},{"password":"000","username":"lisi"}]
复杂java类转换json串:
{
"name":"userGroup",
"users":[{"password":"123456","username":"zhangsan"},
{"password":"000","username":"lisi"}]
}
2.json字符串转为java类:
String jsonStr1 = "{'password':'123456','username':'ggf'}";
// 调用parseObject()
User user = JSON.parseObject(jsonStr1, User.class);
System.out.println("json字符串转简单java对象:"+user.toString());
String jsonStr2 = "[{'password':'123123','username':'zhangsan'},{'password':'321321','username':'lisi'}]"; // 调用parseArray()将字符串转为集合 Listusers = JSON.parseArray(jsonStr2, User.class); System.out.println("json字符串转List
结果:
json字符串转简单java对象:User{username='ggf', password='123456'}
json字符串转List