Ajax详解

简介

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

AJAX 是什么?

AJAX = Asynchronous JavaScript and XML.

AJAX 是一种用于创建快速动态网页的技术。

AJAX 通过在后台与服务器进行少量数据交换,使网页实现异步更新。这意味着可以在不重载整个页面的情况下,对网页的某些部分进行更新。

传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个页面。

AJAX 如何工作

在这里插入图片描述

AJAX 基于因特网标准

AJAX 基于因特网标准,并使用以下技术组合:

  • XMLHttpRequest 对象(与服务器异步交互数据)

  • JavaScript/DOM(显示/取回信息)

  • CSS(设置数据的样式)

  • XML(常用作数据传输的格式)

示例代码

<!DOCTYPE html>
<html>
<body>

<div id="demo">
  <h2>让 AJAX 更改这段文本</h2>
  <button type="button" onclick="loadDoc()">更改文本</button>
</div>

</body>
</html> 
Function loadDoc()

function loadDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.open("GET", "http://www.liulongbin.top:3006/api/getbooks", true);
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
     document.getElementById("demo").innerHTML = this.responseText;
    }
  };
  xhttp.send();
} 
//第一步  先创建一个ajax的核心 XMLHttpRequest
let xhr = new XMLHttpRequerst();
//第二步  使用open 创建请求 第一个参数是请求方式 第二个是请求的地址  第三个是同步或者异步,true为异步
xhr.open('GET',"http://www.liulongbin.top:3006/api/getbooks",true)
xhr.setRequestHeader('') //设置请求头
//第三步  为xhr.onreadystatechange  设置监听事件
xhr.onreadystatechange = function(){
    if(xhr.readyState == 4) {
    if(xhr.status == 200){
    alert(xhr.responseTwxt)
		//readyState  0 请求未初始化  刚刚实例化XMLHttpRequest
		//readyState  1 客户端与服务器建立链接  调用open方法
		//readyState  2 请求已经被接收
		//readyState  3 请求正在处理中
		//readyState  4 请求成功
            }
       }
}
// 第四步 发送请求数据  调用send 发送请求 如果不需要参数就写一个null
xhr.send(null)

xmlhttp.readyState==4 && xmlhttp.status==200的解释:请求完成并且成功返回

xmlhttp.status的值及解释:

status解释
100客户必须继续发出请求
101客户要求服务器根据请求转换HTTP协议版本
200交易成功
201提示知道新文件的URL
202接受和处理、但处理未完成
203返回信息不确定或不完整
204请求收到,但返回信息为空
205服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206服务器已经完成了部分用户的GET请求
300请求的资源可在多处得到
301删除请求数据
302在其他地址发现了请求数据
303建议客户访问其他URL或访问方式
304客户端已经执行了GET,但文件未变化
305请求的资源必须从服务器指定的地址得到
306前一版本HTTP中使用的代码,现行版本中不再使用
307申明请求的资源临时性删除
400错误请求,如语法错误
401请求授权失败
402保留有效ChargeTo头响应
403请求不允许
404没有发现文件、查询或URl
405用户在Request-Line字段定义的方法不允许
406根据用户发送的Accept拖,请求资源不可访问
407类似401,用户必须首先在代理服务器上得到授权
408客户端没有在用户指定的饿时间内完成请求
409对当前资源状态,请求不能完成
410服务器上不再有此资源且无进一步的参考地址
411服务器拒绝用户定义的Content-Length属性请求
412一个或多个请求头字段在当前请求中错误
413请求的资源大于服务器允许的大小
414请求的资源URL长于服务器允许的长度
415请求资源不支持请求项目格式
416请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
417服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求
500服务器产生内部错误
501服务器不支持请求的函数
502服务器暂时不可用,有时是为了防止发生系统过载
503服务器过载或暂停维修
504关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
505服务器不支持或拒绝支请求头中指定的HTTP版本
1xx信息响应类,表示接收到请求并且继续处理
2xx处理成功响应类,表示动作被成功接收、理解和接受
3xx重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx客户端错误,客户请求包含语法错误或者是不能正确执行
5xx服务端错误,服务器不能正确执行一个正确的请求

AJAX - onreadystatechange 事件

onreadystatechange 用于指定XMLHttpRequest对象状态改变时的事件处理函数

每当 readyState 改变时,就会触发 onreadystatechange 事件;

readyState 属性存有 XMLHttpRequest 的状态信息.

属性描述
onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数
readyState存有 XMLHttpRequest 的状态。从 0 到 4 发生变化
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
status200: “OK”
404: 未找到页面

在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。

当 readyState 等于 4 且状态为 200 时,表示响应已就绪

互联网词语

服务器:上网过程中,负责存放和对外提供资源的电脑,叫做服务器。

客户端:上网过程中,负责获取和消费资源的电脑,叫做客户端。

URL地址:

URL(全称是UniformResourceLocator)中文叫统一资源定位符,用于标识互联网上每个资源的唯一存放位置。浏览器只有通过URL地址,才能正确定位资源的存放位置,从而成功访问到对应的资源

URL地址一般由三部组成:

① 客户端与服务器之间的通信协议

② 存有该资源的服务器名称

③ 资源在服务器上具体的存放位置

资源的请求方式:

客户端请求服务器时,请求的方式有很多种,最常见的两种请求方式分别为 get 和 post 请求;

1.get 请求通常用于获取服务端资源(向服务器要资源)

​ 例如:根据 URL 地址,从服务器获取 HTML 文件、css 文件、js文件、图片文件、数据资源等

2.post 请求通常用于向服务器提交数据(往服务器发送资源)

​ 例如:登录时向服务器提交的登录信息、注册时向服务器提交的注册信息、添加用户时向服务器提交的用户信息等各种数据提交操作

jQuery中的ajax

浏览器中提供的 XMLHttpRequest 用法比较复杂,所以 jQuery 对 XMLHttpRequest 进行了封装,提供了一系列 Ajax 相关的函数,极大地降低了 Ajax 的使用难度。

jQuery 中发起 Ajax 请求最常用的三个方法如下:

  • $.get()
  • $.post()
  • $.ajax()

$.get()函数的语法

jQuery 中 $.get() 函数的功能单一,专门用来发起 get 请求,从而将服务器上的资源请求到客户端来进行使用。

$.get() 函数的语法如下:

$.get(url, [data], [callback])

其中,三个参数各自代表的含义如下:

参数名参数类型是否必选说明
urlstring要请求的资源地址
dataobject请求资源期间携带的参数
callbackfunction请求成功时的回调函数

使用 $.get() 函数发起不带参数的请求时,直接提供请求的 URL 地址和请求成功之后的回调函数即可,示例代码如下:

$.get('http://www.liulongbin.top:3006/api/getbooks', function(res) {   
    
    console.log(res) // 这里的 res 是服务器返回的数据

})

使用 $.get() 函数发起带参数的请求时,示例代码如下:

$.get('http://www.liulongbin.top:3006/api/getbooks', { id: 1 }, function(res) {    
    
    console.log(res)

})

$.post()函数的语法

jQuery 中 $.post() 函数的功能单一,专门用来发起 post 请求,从而向服务器提交数据。

$.post() 函数的语法如下:

$.post(url, [data], [callback])

其中,三个参数各自代表的含义如下:

参数名参数类型是否必选说明
urlstring提交数据的地址
dataobject要提交的数据
callbackfunction数据提交成功时的回调函数

使用 $post() 向服务器提交数据的示例代码如下:

$.post('http://www.liulongbin.top:3006/api/addbook',
       { 
    		bookname: '水浒传',
    		author: '施耐庵', 
    		publisher: '上海图书出版社' 
		},    					
       function(res) { // 回调函数     
       		
    		console.log(res)  
       
		})

$.ajax()函数的语法

相比于 $.get() 和 $.post() 函数,jQuery 中提供的 $.ajax() 函数,是一个功能比较综合的函数,它允许我们对 Ajax 请求进行更详细的配置。

$.ajax() 函数的基本语法如下:

$.ajax({   
    		type: '', // 请求的方式,例如 GET 或 POST   
        	url: '',  // 请求的 URL 地址   
        	data: { },// 这次请求要携带的数据  
        	success: function(res) { } // 请求成功之后的回调函数
       })

使用 $.ajax() 发起 GET 请求时,只需要将 type 属性的值设置为 ‘GET’ 即可

$.ajax({   
    		type: 'GET', // 请求的方式   
    		url: 'http://www.liulongbin.top:3006/api/getbooks',  // 请求的 URL 地址   
    		data: { id: 1 },// 这次请求要携带的数据   
    		success: function(res) { // 请求成功之后的回调函数       
                	
                console.log(res)   
            }
	   })

使用 $.ajax() 发起 POST 请求时,只需要将 type 属性的值设置为 ‘POST’ 即可:

$.ajax({   
    	type: 'POST', // 请求的方式   
    	url: 'http://www.liulongbin.top:3006/api/addbook',  // 请求的 URL 地址   
    	data: { // 要提交给服务器的数据      
            bookname: '水浒传',      
            author: '施耐庵',      
            publisher: '上海图书出版社'    
        },   
    	success: function(res) { // 请求成功之后的回调函数       
            console.log(res)   
        }
	})

接口的概念

使用 Ajax 请求数据时,被请求的 URL 地址,就叫做数据接口(简称接口)。同时,每个接口必须有请求方式。

例如:

http://www.liulongbin.top:3006/api/getbooks  //获取图书列表的接口(GET请求)

http://www.liulongbin.top:3006/api/addbook   //添加图书的接口(POST请求)

接口文档

接口文档,顾名思义就是接口的说明文档,它是我们调用接口的依据。好的接口文档包含了对接口URL,参数以及输出内容的说明,我们参照接口文档就能方便的知道接口的作用,以及接口如何进行调用。

接口文档的组成部分

接口文档可以包含很多信息,也可以按需进行精简,不过,一个合格的接口文档,应该包含以下6项内容,从而为接口的调用提供依据:

  1. 接口名称:用来标识各个接口的简单说明,如登录接口,获取图书列表接口等。
  2. 接口URL:接口的调用地址。
  3. 调用方式:接口的调用方式,如 GET 或 POST。
  4. 参数格式:接口需要传递的参数,每个参数必须包含参数名称、参数类型、是否必选、参数说明这4项内容。
  5. 响应格式:接口的返回值的详细描述,一般包含数据名称、数据类型、说明3项内容。
  6. 返回示例(可选):通过对象的形式,例举服务器返回数据的结构。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早睡第一人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值