ajax

  • Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML)
  • AJAX 是一种用于创建快速动态网页的技术。
  • 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。
  • 可以在不重新加载整个网页的情况下,对网页的局部进行更新。
  • 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。
  • 有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。

ajax的实现原理

image.png

1.浏览器创建核心XMLHttpRequest对象
2.浏览器发送HttpRequest请求,到服务器
3.服务器接收浏览器发送过来的HttpRequest请求。
4.服务器创建响应的数据,响应给客户端浏览器
5.浏览器接收到服务器返回的内容,可以对页面进行更新

ajax的优缺点

优点

a) 异步更新,提高效率;
b) 实现局部的刷新,可以不用修改整个页面;
c) 提高用户的体验;

缺点

a) 异步请求不适用所有的场景。异步没有启动的前后顺序。
b) 异步增加服务器的压力。
c) 因为AJAX是在浏览器中使用Javascript技术完成的,所以还需要处理浏览器兼容性问题

什么是异步

异步:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。可以同时发起多个请求;
同步:须当一个请求执行完毕之后,才可以发起新的请求。

ajax既可以发起异步请求,也可以发起同步请求,可以自己去设置。

ajax使用场景

image.png

  • 校验用户是否存在
  • 省市级联
  • 计算购物车数据

ajax实现方式

  • js原生ajax,很少用
  • jquery封装ajax。主流


jquery实现ajax

  1. 使用jquery封装好的方法,操作ajax.
  2. 使用起来方便,代码更少;
  3. 因为使用jquery所以浏览器兼容性更强;
方法 描述
$.ajax() 执行异步 AJAX 请求,可以设置多个参数,定制ajax 请求
$.get() 使用 AJAX 的 HTTP GET 请求从服务器加载数据
$.getJSON() 使用 HTTP GET 请求从服务器加载 JSON 编码的数据
$.post() 使用 AJAX 的 HTTP POST 请求从服务器加载数据


$.ajax

该方法是jquery实现ajax的底层方法,可以发送post请求,也可以是get请求

相关参数:

参数名 描述 实例
type 请求方式
url 服务器路径
data 传递参数
dataType 返回参数的类型
async 是否异步请求
cache 是否缓存
success 成功之后的回调函数
error 失败之后的回调函数


其他的参数可以看jquery ajax 的帮助文档

例如:

  1. //点击事件
  2. $("#ajaxPost").click(function() {
  3. //jquery ajax
  4. $.ajax({
  5. //参数
  6. type : "get", //请求方式
  7. url : "${pageContext.request.contextPath}/Ajax2Servlet", //服务器的路径
  8. //data : "username=xiaohua",//参数
  9. dataType : "json",//返回值类型
  10. success : function(data) {//成功之后的回调函数
  11. alert(data);
  12. },
  13. error : function(data) {
  14. alert("error---:" + data);
  15. }
  16. });
  17. });

$.get

这种方式只能发起get请求

  1. $.get(URL,data,function(data,status,xhr),dataType)
参数 描述
URL 必需。规定您需要请求的 URL。
data 可选。规定连同请求发送到服务器的数据。
function(data,status,xhr) 可选。规定当请求成功时运行的函数。额外的参数:data - 包含来自请求的结果数据status - 包含请求的状态(”success”、”notmodified”、”error”、”timeout”、”parsererror”)xhr - 包含 XMLHttpRequest 对象
dataType 可选。规定预期的服务器响应的数据类型。默认地,jQuery 会智能判断。可能的类型:”xml” - 一个 XML 文档”html” - HTML 作为纯文本”text” - 纯文本字符串”script” - 以 JavaScript 运行响应,并以纯文本返回”json” - 以 JSON 运行响应,并以 JavaScript 对象返回”jsonp” - 使用 JSONP 加载一个 JSON 块,将添加一个 “?callback=?” 到 URL 来规定回调

代码

  1. //点击事件
  2. $("#ajaxGet").click(function() {
  3. $.get("${pageContext.request.contextPath}/Ajax2Servlet",function(data){
  4. alert(data.name);
  5. },"json");
  6. });

$.getJSON()

只是不用设置返回值类型,默认的是json。只有三个参数

$.post

$.post() 方法使用 HTTP POST 请求从服务器加载数据

  1. $(selector).post(URL,data,function(data,status,xhr),dataType)


参数 描述
URL 必需。规定将请求发送到哪个 URL。
data 可选。规定连同请求发送到服务器的数据。
function(data,status,xhr) 可选。规定当请求成功时运行的函数。额外的参数:data - 包含来自请求的结果数据status - 包含请求的状态(”success”、”notmodified”、”error”、”timeout”、”parsererror”)xhr - 包含 XMLHttpRequest 对象
dataType 可选。规定预期的服务器响应的数据类型。默认地,jQuery 会智能判断。可能的类型:”xml” - 一个 XML 文档”html” - HTML 作为纯文本”text” - 纯文本字符串”script” - 以 JavaScript 运行响应,并以纯文本返回”json” - 以 JSON 运行响应,并以 JavaScript 对象返回”jsonp” - 使

代码

  1. //点击事件
  2. $("#ajaxPost").click(function() {
  3. $.post("${pageContext.request.contextPath}/Ajax2Servlet",function(data){
  4. alert(data.name);
  5. },"json");
  6. });

JSON

简介

1.JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式
2.JSON 是存储和交换文本信息的语法。类似 XML。
3.JSON 比 XML 更小、更快,更易解析
4.JSON 具有自我描述性,更易理解 例如:{username:”zhangsan”,age:12,sex:”男”,address:’深圳’}
5.JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台

深圳天气测试数据:

http://v.juhe.cn/weather/indexformat=2&cityname=%E6%B7%B1%E5%9C%B3&key=ee16e4754bdbc037a346646cb63bc16f

优点

  • 数据格式比较简单,易于读写=====>{username:”zhangsan”,age:12,sex:”男”,address:’深圳’}
  • 易于解析,客户端JavaScript可以进行JSON数据的读取
  • 支持多种语言(Java,C,C#,JavaScript,PHP,Python)

json语法

json对象

JSON 使用{}表示一个对象,该对象可以拥有多个属性。

json数组

JSON使用中括号[]表示一个数组。

对象中嵌套数组

  1. {
  2. "name":"张飞",
  3. "age":23,
  4. "address":"广东深圳",
  5. "vip":false,
  6. "phone":[18812345678,13712345678]
  7. }

数组中嵌套对象

  1. [
  2. {"name":"张飞","age":23,"address":"广东深圳","vip":false},
  3. {"name":"刘备","age":23,"address":"广东深圳","vip":false},
  4. {"name":"关羽","age":23,"address":"广东深圳","vip":false},
  5. {"name":"赵子龙","age":23,"address":"广东深圳","vip":false}
  6. ]

json转换