Ajax

Ajax学习

AJAX学习

客户端与服务器

上网的本质目的:通过互联网的形式来获取和消费资源

服务器

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

客户端

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

URL地址

URL地址:UniformResourceLocator——统一资源定位符,用于标记互联网上每一个资源的唯一存放位置,浏览器只能通过URL地址才能正确定位资源的存放位置,从而成功访问对于的资源

URL地址的组成部分

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

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

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

分析网页的打开过程

  • 客户端与服务器之间的通信过程:分为请求——处理——响应

  • 网页中的每一个资源,都是通过请求——处理——响应的方式从服务器获取回来的

 

服务器对外提供了那些资源

网页好最常见的资源:

  • 文字内容

  • 图片资源

  • 音频资源

  • 视频资源

  • 数据也是一种资源

数据是网页的灵魂

  • HTML是网页的骨架

  • CSS是网页的颜值

  • JavaScript是网页的行为

  • 数据还是网页的灵魂

如果要在网页中请求服务器上的数据资源,这需要用到XMLHttpRequest对象

XMLHttpRequest(简称xhr)是浏览器提供的js的成员,通过它,可以请求服务器上的数据资源

最简单的使用方法:var xhr=new XMLHttpRequest()

资源的请求方式

客户端请求服务器时,请求的方式有很多种,最常见的请求方式为GETPOST请求

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

例如:根据URL地址,从服务器获取HTML文件,Css文件,js文件。图片文件等

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

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

了解Ajax

Ajax:Asynchronous JavaScript And XML(异步JavaScript和XML)

通俗理解:在网页中利用XMLHttpRequest对象和服务器进行数据交互的方式,就是Ajax

Ajax能让我们轻松实现网页与服务器之间的数据交互

Ajax的典型应用场景

  • 用户名的检测

  • 数据分页显示

  • 数据的增删改查

JQuery中的Ajax

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

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

  • $.get()——从服务器拿数据

  • $.post()——从服务器提交数据

  • $.ajax()——既可以从服务期拿数据,也可以从服务器提交数据

$.get()函数的语法

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

$.get()语法格式:

参数:

  • url——请求的资源地址,参数类型为String,是必选参数,即servlet接口的地址

  • data——可选参数,参数类型为object,请求资源期间携带的参数

  • callback——可选参数,参数类型为function,请求成功的回调函数,数据获取成功后会调用这个函数

$.get()发起不带参数的请求

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

例如:

servlet接口里的response.getWrite().write(“hello world”)就是Ajax接收到的参数,即res

$.get()发起带参数的请求

例如:

$.post()函数的语法

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

$.post()语法:

  • url——必选参数,是提交数据的接口地址

  • data——可选参数,是要提交的数据,参数类型是object对象

  • callback——可选参数,数据提交成功的回调函数,function

$.post()向服务器提交数据

$.ajax()函数的语法

相比于其他两个请求,$.ajax()函数是一个功能比较齐全的综合函数,它允许我们队Ajax请求进行更详细的配置

$.ajax()的基本语法:

  • type:请求的方式,值为GETPOST,可以写成小写,建议写成大写

  • url:请求的接口地址

  • data:请求携带的数据——不需要参数可以不写

  • success:请求成功后的回调函数

使用$.ajax()发起GET请求

使用$.ajax()发起POST请求

 

接口

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

接口的请求过程

Screenshot_20221128_221324

Screenshot_20221128_221730

接口测试工具

接口测试工具:为了验证接口能否被正常访问,我们常常需要使用接口测试工具,来对数据接口进行检测。

好处:接口测试工具能让我们在不写任何代码的情况下,对接口进行调用和测试。

使用PostMan接口测试工具

PostMan的官网:https://www.getpostman.com/downloads/

接口文档

接口文档,接口的说明书,他是我们调用接口的依据,好的接口文档包含了对接口URL、参数以及输出内容的说明

接口的组成部分:

  • 接口名称:用来标识各个接口的简单说明

  • 接口URL:接口的调用地址

  • 调用方法:接口的调用方式

  • 参数格式:接口需要传递的参数,每一个参数必须包括参数名称、参数类型、是否必选、参数说明这4项内容

  • 响应格式:接口的返回值的详细描述,一般包含数据名称、数据类型、说明3项内容

  • 返回示例(可选):通过对象的形式,例举服务器返回数据的结构

JSON

JSON的基础语法

  • 定义

  • 示例

  • 获取数据

    变量名.key

value的数据类型

  • 数字(整形或浮点型)

  • 字符串(在双引号中)

  • 逻辑值(true或false)

  • 数组(在方括号中)

  • 对象(在花括号中)

  • null

JSON数据和Java对象转换

  • 请求数据:JSON字符串转为Java对象

  • 响应数据:Java对象转为JSON字符串

  • Fastjson:是阿里巴巴提供的一个Java语言编写的高性能功能完善的JSON库,是目前Java语言最快的JSON库,可以实现Java对象和JSON字符串的转换

  • 使用:

    • 导入坐标

    • java对象转JSON

    • JSON字符串转Java对象

       

案例

  • 测试类

  • User对象

FormData对象管理表单数据

  • ajax操作往往用来提交表单数据,为了方便处理,HTML5新增了一个FormData对象,可以模拟表单操作

使用流程:

FormData对象也可以用来获取网页表单的值

示例:

上传文件

  • 新版的XMLHttpRequest对象,不仅可以实现发送文本信息,还可以实现上传文件的功能

实现步骤

  • 定义UI结构

  • 验证是否选择文件

  • FormData中追加文件

  • 使用xhr发起上传文件的ajax请求

  • 监听onreadystatechange事件

显示文件的上传进度

新版本的XMLHttpRequest对象中可以通过监听xhr.upload.onprogress事件来获取文件的上传进度

语法格式

案例

使用JQuery实现文件上传

  • 第一步:使用FormData对象获取文件

    let fd=FormData()

    fd.append(“file”,files[0])

  • 使用ajax发送请求

    $.ajax({

    type:”POST”,

    data:fd,

    url:””,

    contentType:fales,

    processData:fales,

    success:function(res){},

    error:function(){}

    })

需要注意的是,使用JQuery来操作ajax进行文件的上传时,必须要使用属性contentType和属性processData,且这两个属性的值都要设置为false,不对FormData中的数据进行编码,使用FormData数据原格式发送到服务器

 

JQuery实现loading效果

  • ajaxStart(callback)

ajax请求开始时,执行ajaxStart函数,可以在ajaxStart的callback中显示loading效果,示例如下:

注意:$(document).ajaxStart()函数会监听当前文档内所有的Ajax请求

  • ajaxStop(callback)

ajax请求结束后,执行ajaxStop函数,可以在ajaxStop的callback中隐藏loading效果:


axios

axios是专注于网络数据请求的库

相比于原生的XMLHttpRequest对象,axios简单易用

相比于JQuery,axios更加轻量化,只专注于网路数据的请求

axios发起GET请求

axios.get(“url”,{ params:{ 参数 } } ).then(callback)

 

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

Other My Posts