整体介绍
◆了解jQuery3的基本使用方法
◆掌握Ajax处理流程与实现流程
◆掌握jQueryr中Ajax方法的使用
JavaScript库
为了简化JavaScript开发,第三方厂商开发了JavaScript库
jQuery介绍
◆jQuery是一个轻量级JS库,使用十分简单
◆jQuery的核心是选择器,用于获取页面元素
◆jQuery提供了大量高效方法,开发速度大幅提升
jQuery下载与安装
jQuery官网:jquery.com,最新版本3.6.0
◆jQuery采用独立JS文件发布:jquery-3.6.0js
◆lDE:Eclipse、Hbuilder、sublime、webstorm
Download jQuery | jQuery
学习中可以使用Download the uncompressed, development jQuery 3.6.0未压缩,源代码版 3.6.0.js
线上部署可以使用Download the compressed, production jQuery 3.6.0生产版本 3.6.0.min.js
.js版本是源代码的代码版本,笔记本打开易于阅读,但是文件大小比较大,200多k,所以不用于生产部署打包,而min.js是压缩打包过的,不易于阅读,但只有80多k,可以用于生产部署
min.js:
.js:
在webapps下新建js文件夹,在js目录下粘贴这两个文件,不同情况进行不同引用
jQuery选择器实验室
添加输入标签就选择相应的标签语句进行高亮
基本选择器
Web页面开发的两个要素
在使用HTML开发页面时,有两个基本点:
- 选择HTML页面上在哪些元素
- 在这些元素上做哪些动作
jQuery选择器
◆jQuery选择器用于选中需要操作的页面元素
◆语法1:jQuery(选择器表达式)
◆语法2:$(选择器表达式)
基本选择器
◆基本选择器是jQuery最基础也是最常用的选择器表达式
层叠与属性选择器
层叠选择器
◆层叠选择器是根据元素的位置关系来获取元素的选择器表达式
例如:
属性选择器
◆属性选择器是根据元素的属性值来选择元素的选择器表达式
例如:
搭配基本选择器使用:
在基本选择器中选中搜索框:
在属性选择器中:
属性选择器只有明确书写了属性名和属性值才会进行匹配
位置与表单选择器
位置选择器
位置选择器是指通过位置获取指定的元素,例如“获取第3个元素”
例如:
表单选择器
◆表单选择器是获取表单元素的简化形式,例如:获取所有文本框
例如:
无论是否书写了text这个选择器名,只要是个标准的文本框就会被选中,不像属性选择器必须有对应属性名和属性值
操作元素属性
Web页面开发的两个要素
在使用HTML开发页面时,有两个基本点:
- 选择HTML页面上在哪些元素
- 在这些元素上做哪些动作
上面的选择器学习完成第一步
下面学习进行第二步
操作元素属性
◆attr(nameproperties key)-获取或设置元素属性
◆removeAttr(name)-移除元素属性
一个参数表示获取属性
两个参数表示设置属性
$("a[href*='163']").attr("href" , "http://www.163.com");
如果获取多个属性,比如获取所有a标签
会默认返回第一个属性值
注意获取多个属性值会默认返回第一个,而设置多个属性值会全部进行赋值设置
移除属性:移除所有超链接
$("a").removeAttr("href");
操作元素CSS样式
◆CSS()-获取或设置匹配元素的样式属性
◆addClass()-为每个匹配的元素添加指定的类名
◆removeClass0-从所有匹配的元素中删除全部或者指定的类
使用json格式添加CSS样式
$("a").css({"color" : "red" , "font-weight" : "bold" , "font-style" : "italic"});
像上一节一样添加高亮样式:
$("li").addClass("highlight");
$("li").addClass("highlight myclass"); 用过空格+类名添加样式,可以无限添加
设置元素内容
◆val()-获取或设置输入项的值
◆text()-获取或设置元素的纯文本
◆html()-获取或设置元素内部的HTML
设置输入值:
$("input[name='uname']").val("administrator"); 设置文本框值为administrator
获取输入值:
获取html内容:
同理,使用text()获取的内容也有<b>标签,而使用html()没有
工作中一般使用text()
jQuery事件处理方法
◆on(“click”,function)-为选中的页面元素绑定单击事件
◆click(function)-是绑定事件的简写形式
◆处理方法中提供了event参数包含了事件的相关信息
当用户输入有空格时就变红:
使用event进行事件处理,输入admin+空格,观察出空格的keyCode为32
Ajax介绍
◆Asynchronous JavaScript And XML(异步的JavaScript和XML)
◆Ajax可以在不刷新页面的前提下,进行页面局部更新
◆Ajax不是新的技术,Ajax并不是W3C的标准
Ajax使用流程
◆创建XmlHttpReqeust对象
◆发送Ajax请求
◆处理服务器响应
创建XmlHttpReqeust对象
◆XMLHttpRequest是Ajax的核心,Ajax使用该对象发起请求、接收响应
◆XMLHttpRequest并不是W3C的标准,不同浏览器的创建方式不同
加载按钮:
发送Ajax请求
◆xmlhttp.open()用于创建请求
◆xmlhttp.send()用于发送请求
第三个参数代表是否采用异步
同级目录直接使用/content链接
src下新建ContentServlet.Java文件
网络录制点击加载按钮
我们发现只出现content文件,请求方式和html一样,但是没有出现index.html文件,说明确实之发生了局部刷新,而没有全局刷新
得到响应但是该如何进行加载到浏览器界面?这时需要进行Ajax第三步
处理服务器响应
◆xmlhttp.onreadystatechange()事件用于监听Ajax的执行过程
◆xmlhttp.readyState属性说明XMLHttpRequest当前状态
◆xmlhttp.status属性服务器响应状态码,200:成功404:未找到。…
每点击一次就出现一次,而且是整个不刷新的状态直接获取内容
大部分服务器返回的不是HTML片段,AJAX获取到的而是JSON数据,下回讲解
同步与异步
true是同步,false是异步,默认异步
◆同步是在服务器未返回JSON前,JS程序一直处于阻塞等待的状态
◆异步是在服务器未返回JSON前,不阻塞程序,Ajax通过回调获取结果
利用Jackson实现JSON序列化输出
Ajax+JSON开发模式
Jackson
◆Jackson是国内外著名的Java开源JSON序列化组件
◆Jackson国内拥有大量使用者,拥有API简单,效率高等优点
◆Jackson也是众多Java框架的底层组件,掌握Jackson很重要
添加jackson的maven依赖,让其自动下载
记得在pom.xml文件下右键点击maven重新加载项目
由于国内外通信原因,可能无法下载,导致一串报红,可以添加阿里云镜像
然后继续在pom.xml文件下右键点击maven重新加载项目
这时,idea会在后台进行下载,下载成功后,不再爆红,在外部库即可观察到下载的依赖项
注意:当程序使用tomcat发布时,记得将添加的依赖加入到out文件夹下或者target文件夹下web-inf下的lib目录,否则无法运行,具体操作点击项目结构→工件→找到新添加的依赖→选中右键添加到lib目录
Ajax处理JSON数据
news.java文件
NewsServlet.java文件
在news.html的script标签对里:
此处只能获得json结构的字符串,需要转换为JSON对象
这时获取到的才是json数据
html渲染:获取到数据进行二次开发的过程
缺点:每发送一次ajax,就要遵循一次创建对象,发送请求,服务响应的过程,比较繁琐,下面学习ajax的封装js库
Axios快速入门
axios中文网|axios API 中文文档 | axios (axios-js.com)
在webapp下新建js目录,创建axios.js文件,将https://unpkg.com/[email protected]/dist/axios.min.js
里面内容全部复制粘贴进去,因为是min.js文件,是压缩过的,不具有可读性
发送get请求
引入js文件后
例如:执行 GET
请求
预留一个对象axios,.get方法即执行get请求,‘/user’是预处理的url,params是请求参数,改为使用json格式进行表达,.then表示服务器成功响应返回后会执行里面代码,response是从服务器返回的对象,通过response就能拿到服务器返回的json数据,.catch是异常情况进行处理的代码
发送post请求
执行 POST
请求
与get请求方式不相同
url后面不跟json对象,而是标准的请求参数形式,多个参数使用&符号链接,第三个参数需要为header请求头,固定为{"content-type": "application/x-www-form-urlencoded"}
表示请求参数放置于请求体中
注意需要在servlet中重写post方法,否则返回405错误
axios提供一种面向对象的扩展方式进行post发送
调用方式也要发生改变:
此种方法可读性更好
实现二级联动菜单
在com.imooc.ajax.entity的文件目录下:
新建对channel的定义:
Channel.java文件:
在com.imooc.ajax.servlet目录下:
浏览器地址栏输入localhost:8080/ajax/channel?level=1
得到一级菜单数据
同理输入二级菜单
这时后端的交互数据已经完成,只需要前端做出页面交互就行
一级和二级菜单需要产生两个ajax请求
在每次加载二级菜单时,应该清除原有数据再进行加载,否则会导致结果叠加出现
清除数据语句:
lv2.length = 0;