JavaWeb学习笔记——JQuery与AJAX基础

本文是学习Java时所记录的学习笔记,本节是JQuery和AJAX的基础内容,因为这两个技术使用的时候会相互依赖,所以放在一起。掌握后能实现JQuery操作页面元素以及JQuery配合AJAX实现前后端数据交互,实现局部刷新。是从慕课网学习,提取了我觉得是重点的内容,欢迎留言,私信交流~

JQuery基础

JQuery简介

什么是JQuery?

轻量级JS库,JQuery的核心是选择器,用于获取页面元素,使用十分简单。

什么是JavaScript库?

由第三方厂商开发的JavaScript函数库,为了简化JavaScript的开发。

主流JavaScript库

  • JQuery
  • Vue.js
  • AngularJS
  • React

JQuery的具体实现

下载与安装

JQuery官网:jquery.com
需要的JAR包:jquery-3.3.1.js
前端开发的IDE工具推荐:Eclipse、Hbuilder、sublime、webstorm

压缩版文件

.min.(文件名中包含min字样)

文件中有“min”字样,表示文件是被压缩过,文件大小会小很多。通常开发时使用不带min字样的jar包,项目部署时可以使用带min字样的jar包。

JQuery选择器语法

语法1:JQuery(选择器表达式)

语法2:$(选择器表达式)

案例

案例1

选择a标签,设置css属性为“color=ref font-weight=bold”。

$("a").css({"color":"red","font-weight":"bold"});

案例2

选择id为liebiao的标签,追加内容“<br>test</br>”

$("#liebiao").append("<br>test</br>");

案例3

为span标签增加onclick事件,click是onclick的简写。点击后执行function里的方法(这里的function方法没有添加具体的执行内容)

$("span").click(function(){})

案例4

设置href属性包含163值的a标签,属性修改为:“href=“http://www.163.com/””

 $("a[href*='163']").attr("href","http://www.163.com/");

JQuery的相关知识

基本选择器
语法说明
$("#id")ID选择器,指定id元素的对象
$(“标签”)元素选择器,选择指定标签名的选择器
$(".class")类选择器,选中拥有指定css类的元素
$(“S1,S2,SN”)组合选择器,对多个元素进行选择(多个上面3种表达式)
层叠选择器
语法说明
$(“ancestor descendant”)后代选择器
$(“ancestor>descendant”)子选择器
$(“prev~siblings”)兄弟选择器
属性选择器

根据元素的属性值来选择元素的选择器表达式。

语法说明
$(“selector[attribute=‘value’]”)选中属性值等于具体值的组件
$(“selector[attribute^=‘value’]”)选中属性值以某值开头的组件
( &quot; s e l e c t o r [ a t t r i b u t e (&quot;selector[attribute ("selector[attribute=‘value’]")选中属性值以某值结尾的组件
$(“selector[attribute*=‘value’]”)选中属性值包含某值的组件
位置选择器(不常用,仅了解)

通过位置获取指定元素,例如“获取第3个元素”。

语法说明
$(“selector:first”)获取第一个元素
$(“selector:last”)获取最后一个元素
$(“selector:even”)获取偶位置的元素(从0开始,0是偶数)
$(“selector:odd”)获取奇位置的元素(从0开始,0是偶数)
$(“selector:eq(n)”)获取指定位置的元素(从0开始,0是偶数)
表单选择器(不常用,仅了解)

获取表单元素的简化形式,例如“获取所有文本框”。

语法说明
$(“selector:input”)获取所有输入元素
$(“selector:text”)获取文本框
$(“selector:password”)获取密码框
$(“selector:submit”)获取提交按钮
$(“selector:reset”)获取重置按钮
操作元素属性
方法名说明示例
attr(name|properties|key)获取或设置元素属性$(“a[href*=‘163’]”).attr(“href”,“http://www.163.com/”);
removeAttr(name)移除元素指定属性$(“a”).removeAttr(“href”);
操作元素的CSS样式
方法名说明示例
css()获取或设置匹配元素的样式属性$(“a”).css({“color”:“red”,“font-weight”:“bold”});
addClass()为每个匹配的元素添加指定的类名$(“li”).addClass(“highlight”);
removeClass()从所有匹配的元素中删除全部或者指定的类$(“p”).removeClass(“myclass”);
设置元素内容
方法名说明示例
val()获取或设置输入项的值$(“input[name=‘uname’]”).val(“admin”);
text()获取或设置元素的纯文本(显示内容不转义,获取转义)$(“span.myclass”).text(“test”);
html()获取或者设置元素内部的HTML文本(显示转义,获取不转义)$(“span.myclass”).html(“test”);
append()把数据追加到最后$("#liebiao").append("
"+json+"");
事件处理方法
方法名说明示例
on(“click”,function)为选中的页面元素绑定单击事件$(“p.myclass”).on(“click”,function(){});
click(function)是绑定事件的简写形式$(“span”).click(function(){})
event事件对象,包含了事件的具体信息(如按下哪个键等)$(“input”).keypress(function(event)){}

常用事件

鼠标事件键盘事件表单事件文档/窗口事件
click(单击)keypress(按下弹起)submit(提交)load(加载时)
dblclick(双击)keydown(按下)change(输入项内容变化)resize(尺寸变化时)
mouseenter(鼠标移入)keyup(弹起)focus(输入项获得焦点)scroll(滚动时)
mouseleave(鼠标移出)blur(失去焦点)unload(窗口关闭)
mouseover(鼠标移动)
页面就绪函数

页面就绪函数是指在页面加载完成后执行的函数。

  • 语法1: $(document).ready(function)
  • 语法2:$(function)

Ajax基础

Ajax简介

什么是Ajax?

Asynchronous JavaScript And XML(异步的JavaScript和XML),Ajax的特点是可以在不刷新页面的前提下,进行局部更新。

(Ajax的逻辑就是:把前端数据传到后台,后台处理后把需要传回的数据转换为JSON字符串并传给前端,前端再处理传回的JSON字符串即可)

通常ajax和JQuery配合使用。

Ajax的具体实现

方法一:通过XmlHttpRequest对象实现
  1. 创建XmlHttpRequest对象
  2. 发送Ajax请求
  3. 处理服务器响应

不同版本创建XmlHttpRequest的方式不同

<!--以下代码可以通用在新老版本-->
var xmlhttp;
if(window.XMLHttpRequest){
	//IE7+,Firefox,Chrome,Opera,Safari浏览器存在XMLHttpRequest对象
	xmlhttp=new XMLHttpRequest();
}
else{
	//IE6,IE5浏览器没有XMLHttpRequest对象
	xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

根据服务器响应状态进行下一步处理

xmlhttp.onreadystatechange=function()
{
    //响应已被接收且服务器处理成功时才执行
    if (xmlhttp.readyState==4 && xmlhttp.status==200){
        //获取响应体的文本
        var responseText = xmlhttp.responseText;
        //对服务器结果进行处理
        //...具体执行内容...
    }
}
方法二:JQuery提供的Ajax简写

和方法一的写法不同,方法二的实现代码更加简洁。

实现流程:

  1. 使用$.ajax({})语句实现ajax。
  2. 在内部添加设置项(如url、type、dataType和success等)
  3. 前端页面通过Ajax提交内容到后台,后台处理后返回对应格式的数值(根据前端ajax里dataType数值的值来决定返回的格式)。
  4. 如果前面流程执行成功,则在把返回的内容放在success中执行下一步操作。如果失败则把返回内容放在error里执行下一步操作。

案例

为id=yuangong的标签添加点击事件。点击标签后通过ajax传递内容,访问地址为url,提交类型为get,数据内容为data,服务器返回值的类型为dataType,成功后执行success里的内容。

<script type="text/javascript">
$(function(){
    $("#yuangong").click(function(){
    	$("#liebiao").text("");
    	$.ajax({
    		"url":"/JQueryAjax/list",
    		"type":"get",
    		//下面这种形式也可以
    		//"data":{"id":"abc","group":"123"},
    		"data":"id=yuangong",
    		"dataType":"json",
    		"success":function(json){
    			for(var i=0;i<json.length;i++){
    				$("#liebiao").append("<br>"+json[i]+"</br>");
    			}
    		}
    	})
    });
})
案例1——访问html页面自动加载ajax获得数据
  • 该案例实现访问cascade.html页面,就会自动加载ajax代码,ajax代码会访问后端/ajax/channel,后端处理之后返回数据给前端,前端把数据处理后再展现出来。
  • cascade.html前台页面,关键部分代码:
    <head>
    <script type="text/javascript">
    $(function(){
    	$.ajax({
    		"url" : "/ajax/channel",
    		"data" : {"level" : "1"},
    		"type" : "get" , 
    		"dataType" : "json" , 
    		"success" : function(json){
    			console.log(json);
    			for(var i = 0 ; i < json.length ; i++){
    				var ch = json[i];
    				$("#lv1").append("<option value='" + ch.code + "'>" + ch.name + "</option>")
    			}
    		}
    	})
    })
    </script>
    </head>
    
  • ChannelServlet.java后端代码,使用servlet实现访问控制。后端处理比较简单,只需要将要返回的内容以key:value的形式编写,然后转换为字符串,再把字符串返回给前端即可。
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	String level = request.getParameter("level");
    	List chlist = new ArrayList();
    	if(level.equals("1")) {
    		chlist.add(new Channel("姓名" , "张三"));
    		chlist.add(new Channel("姓名" , "李四"));
    	}else{
    		chlist.add(new Channel("姓名" , "汤姆"));
    		chlist.add(new Channel("姓名" , "杰克"));
    	}
    	String json = JSON.toJSONString(chlist);
    	response.setContentType("text/html;charset=utf-8");
    	response.getWriter().println(json);
    }
    
案例2——点击html页面中的标签触发ajax,实现局部刷新
  • 该案例实现点击id=1v1的标签后,触发js方法,执行ajax向后台/ajax/channel发送数据,后端处理完毕后返回数据,前端接收到数据后进行处理然后展示。
  • cascade.html前台页面,关键部分代码:
    <head>
    <script type="text/javascript">
    $(function(){
    	$("#lv1").on("change" , function(){
    		var parent = $(this).val();
    		console.log(parent);
    		$.ajax({
    			"url" : "/ajax/channel" , 
    			"data" : {"level" : "2" , "parent" : parent},
    			"dataType" : "json" , 
    			"type" : "get" ,
    			"success" : function(json){
    				console.log(json);
    				//移除所有lv2下的原始option选项
    				$("#lv2>option").remove();
    				for(var i = 0 ; i < json.length ; i++){
    					var ch = json[i];
    					$("#lv2").append("<option value='" + ch.code +"'>" + ch.name + "</option>")
    				}
    			}
    		})
    	})
    })
    </script>
    </head>
    
  • ChannelServlet.java后端代码,使用servlet实现访问控制。后端处理比较简单,只需要将要返回的内容以key:value的形式编写,然后转换为字符串,再把字符串返回给前端即可。
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	String level = request.getParameter("level");
    	String parent = request.getParameter("parent");
    	List chlist = new ArrayList();
    	if(level.equals("1")) {
    		chlist.add(new Channel("姓名" , "张三"));
    		chlist.add(new Channel("姓名" , "李四"));
    	}else if(level.equals("2")) {
    		if(parent.equals("en")) {
    			chlist.add(new Channel("姓名" , "汤姆"));
    			chlist.add(new Channel("姓名" , "杰克"));
    		}else if(parent.equals("rus")){
    			chlist.add(new Channel("姓名" , "亚历山大"));
    			chlist.add(new Channel("姓名" , "马克西姆"));
    		}
    	}
    	String json = JSON.toJSONString(chlist);
    	response.setContentType("text/html;charset=utf-8");
    	response.getWriter().println(json);
    }
    

Ajax的相关知识

XMLHttpRequest相关(较复杂的AJAX实现方法)

XMLHttpRequest类
直接在html中使用如下方法即可实现对应功能。

方法名称说明示例
xmlhttp.open()设置请求地址。参数分别代表:请求地址链接,请求方式,是否异步xmlhttp.open(“GET”,"/ajax/cs?flag=1",true)
xmlhttp.send()向目标地址发送请求
xmlhttp.onreadystatechange每当readyState发生改变时,就会触发该事件xmlhttp.onreadystatechange=function(){}
xmlhttp.readyState反应当前XMLHttpRequest的状态
xmlhttp.status服务器响应状态码,200成功,404未找到
readyState值说明
readyState=0请求未初始化
readyState=1服务器连接已建立
readyState=2请求已被接收
readyState=3请求正在处理
readyState=4响应文本已被接收
JQuery提供的Ajax简写(推荐的AJAX实现方法)
简写Ajax说明
$.ajax()调用ajax方法
$.get()发送Get方式Ajax请求
$.post()发送Post方式Ajax请求
$.ajaxSetup()设置Ajax全局默认值
常用属性说明
url发送请求地址
type请求类型
get | post
data向服务器传递的参数
dataType服务器响应的数据类型
text | json | xml | html | jsonp| script
success接收响应时的处理函数
error请求失败时的处理函数
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值