jQuery Ajax Bootstrap
jQuery
JavaScript库
为了简化JavaScript开发,第三方厂商开发了JavaScript库
常用的库:jQuery Vue.js Angular React
1.简介
jQuery内部封装了原生的js代码(还额外添加了很多的功能)
能够让你通过书写更少的代码 完成js操作
兼容多个浏览器的 你在使用jQuery的时候就不需要考虑浏览器兼容问题
2.使用
在官网jquery.com下载
方式1
放入同一文件夹
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="jquery-3.5.1.js"></script>
</head>
<body>
</body>
</html>
方式2
直接引入jquery提供的CDN服务
CDN:内容分发网络
CDN有免费的也有收费的
前端免费的cdn网站:
bootcdn
pycharm或者IDEA默认添加
3. jQuery实验室
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
<title>jQuery实验室</title>
<style>
.myclass {
font-style: italic;
color: darkblue;
}
/* 高亮css类 */
.highlight {
color: red;
font-size: 30px;
background: lightblue;
}
</style>
</head>
<body>
<div class="section">
<h2>jQuery选择器实验室</h2>
<input style="height: 24px" id="txtSelector" />
<button id="btnSelect" style="height: 30px">选择</button>
<hr />
<div>
<p id="welcome">欢迎来到选择器实验室</p>
<ul>
<li>搜索引擎:<a href="http://www.baidu.com">百度</a> <span> <a
style="color: darkgreen" href="http://www.so.com">360</a>
</span>
</li>
<li>电子邮箱:<a href="http://mail.163.com">网易邮箱</a> <span> <a
style="color: darkgreen" href="http://mail.qq.com">QQ邮箱</a>
</span>
</li>
<li>中国名校:<a href="http://www.tsinghua.edu.cn">清华大学</a> <span>
<a style="color: darkgreen" href="https://www.pku.edu.cn/">北京大学</a>
</span>
</li>
</ul>
<span class="myclass ">我是拥有myclass类的span标签</span>
<p class="myclass">我是拥有myclass的p标签</p>
<form id="info" action="#" method="get">
<div>
用户名:<input type="text" name="uname" value="admin" /> 密码:<input
type="password" name="upsd" value="123456" />
</div>
<div>
婚姻状况: <select id="marital_status">
<option value="1">未婚</option>
<option value="2">已婚</option>
<option value="3">离异</option>
<option value="4">丧偶</option>
</select>
</div>
<div class="left clear-left">
<input type="submit" value="提交" /> <input type="reset" value="重置" />
</div>
</form>
</div>
</div>
<script type="text/javascript">
document.getElementById("btnSelect").onclick=function () {
var btnSelect=document.getElementById("txtSelector").value;
$("*").removeClass("highlight");
$(btnSelect).addClass("highlight");
}
</script>
</body>
</html>
4. 基本语法
jQuery(选择器).action()
秉持着jQuery的宗旨 jQuery简写 $
jQuery() === $()
4.1基本选择器
基本选择器(同css)
# id 选择器
$("#id")
# 标签选择器
$("div")
# class选择器
$(".className")
# 配合使用
$("div.c1")
# 所有元素选择器
$("*")
4.2组合选择器 层级选择器
# 组合选择器
$("#id, .className, tagName")
层级选择器(同css)
x 和 y 可以为任意选择器
#后代选择器
$("x y")
# x的所有后代y(子子孙孙)
#子选择器
$("x > y")
# x的所有儿子y
#毗邻选择器
$("x + y")
# 找到所有紧挨在x后面的y
#兄弟选择器
$("x - y")
# x之后所有的兄弟y
4.3属性选择器
属性选择器
#精确匹配
$('a[username="jason"]')
$("input[type='text']") 只有写了属性的才有效,默认的无效
#匹配开头
$('a[herf="http://www."]')
#匹配结尾
$('a[href="edn.cn"]')
#匹配包含
$('a[href="edu."]')
4.4基本筛选器
基本筛选器
:first
# 第一个
:last
# 最后一个
:eq(index)
# 索引等于index的那个元素
:even
# 匹配所有索引值为偶数的元素,从 0 开始计数
:odd
# 匹配所有索引值为奇数的元素,从 0 开始计数
:gt(index)
# 匹配所有大于给定索引值的元素
:lt(index)
# 匹配所有小于给定索引值的元素
:not(元素选择器)
# 移除所有满足not条件的标签
:has(元素选择器)
# 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)
示例:
$("div:has(h1)")
# 找到所有后代中有h1标签的div标签,意思是首先找到所有div标签,把这些div标签的后代中有h1的div标签筛选出来
$("div:has(.c1)")
# 找到所有后代中有c1样式类(类属性class='c1')的div标签
$("li:not(.c1)")
# 找到所有不包含c1样式类的li标签
$("li:not(:has(a))")
# 找到所有后代中不含a标签的li标签
4.5表单选择器
$("input:text")
5.6操作元素属性
操作元素属性
attr(name|properties|key) 获取或设置元素属性,一个参数获取 两个参数修改
remove(name) 移除元素属性
$("a[href*='163']").attr("href" , "http://www.163.com");
多个属性.attr 获取时会第一个属性 设置时会设置所有的
$("a").removeAttr("href");
操作CSS属性
获取或设置元素属性,一个参数获取 两个参数修改
$("a").css("color" , "red");
$("a").css({"color" : "red" , "font-weight" : "bold" , "font-style" : "italic"}); 多个属性用JSON对象
添加删除属性
$("li").addClass("highlight");单个
$("li").addClass("highlight myclass");多个
$("p").removeClass("myclass");
设置元素内容
val()获取或设置输入项的值
text()获取或设置元素的纯文本
html()获取或设置元素内部的HTML
$("input[name='uname']").val("administrator");
var v = $("input[name='uname']").val();
alert(v);
//text与html方法最大的区别在于对于文本中的html标签是否进行转义
//$("span.myclass").text("<b>锄禾日当午,汗滴禾下土</b>");
$("span.myclass").html("<b>锄禾日当午,汗滴禾下土</b>");
var vspan = $("span.myclass").text();
alert(vspan);
5.jQuery事件处理
on("clik",function) 为选中的页面元素绑定单击事件click(function)是绑定事件的简写形式$("p.myclass").on("click",function(){ $(this).css("background-color","yellow"); //this是当前事件产生的对象});$("span.myclass").click(function(){ $(this).css("background-color","lightgreen");});$("input[name="uname"]").keypress(function(event){ console.log(evevt); event包含了按键细节 key:" " keyCode:32 if(event.ketCode==32){ 判断是否空格按下 $(this).css("background-color","red"); }});
6.jq is两者相互转换
* jq -- > js : jq对象[索引] 或者 jq对象.get(索引)* js -- > jq : $(js对象)// jQuery对象如何变成标签对象$('#d1')[0]<div id="d1">…</div>document.getElementById('d1')<div id="d1">…</div>// 标签对象如何转jQuery对象$(document.getElementById('d1'))w.fn.init [div#d1]
7.小结
7.1选择器
1. 基本操作学习:
1. 事件绑定
//1.获取b1按钮
$("#b1").click(function(){
alert("abc");
});
2. 入口函数
tion () {
});
window.onload 和 $(function) 区别
- window.onload 只能定义一次,如果定义多次,后边的会将前边的覆盖掉
function)可以定义多次的。
3. 样式控制:css方法
// $("#div1").css("background-color","red");
$("#div1").css("backgroundColor","pink");
2. 分类
\1. 基本选择器
1. 标签选择器(元素选择器)
- 语法: $("html标签名") 获得所有匹配标签名称的元素
2. id选择器
- 语法: $("#id的属性值") 获得与指定id属性值匹配的元素
3. 类选择器
- 语法: $(".class的属性值") 获得与指定的class属性值匹配的元素
4. 并集选择器:
- 语法: $("选择器1,选择器2....") 获取多个选择器选中的所有元素
\2. 层级选择器
1. 后代选择器
- 语法: $("A B ") 选择A元素内部的所有B元素
2. 子选择器
- 语法: $("A > B") 选择A元素内部的所有B子元素
\3. 属性选择器
1. 属性名称选择器
- 语法: $("A[属性名]") 包含指定属性的选择器
2. 属性选择器
- 语法: $("A[属性名='值']") 包含指定属性等于指定值的选择器
3. 复合属性选择器
- 语法: $("A[属性名='值'][]...") 包含多个属性条件的选择器
\4. 过滤选择器
1. 首元素选择器
- 语法: :first 获得选择的元素中的第一个元素
2. 尾元素选择器
- 语法: :last 获得选择的元素中的最后一个元素
3. 非元素选择器
- 语法: :not(selector) 不包括指定内容的元素
4. 偶数选择器
- 语法: :even 偶数,从 0 开始计数
5. 奇数选择器
- 语法: :odd 奇数,从 0 开始计数
6. 等于索引选择器
- 语法: :eq(index) 指定索引元素
7. 大于索引选择器
- 语法: :gt(index) 大于指定索引元素
8. 小于索引选择器
- 语法: :lt(index) 小于指定索引元素
9. 标题选择器
- 语法: :header 获得标题(h1~h6)元素,固定写法
\5. 表单过滤选择器
1. 可用元素选择器
- 语法: :enabled 获得可用元素
2. 不可用元素选择器
- 语法: :disabled 获得不可用元素
3. 选中选择器
- 语法: :checked 获得单选/复选框选中的元素
4. 选中选择器
- 语法: :selected 获得下拉框选中的元素
3. DOM操作
\1. 内容操作
1. html(): 获取/设置元素的标签体内容 内容 --> 内容
2. text(): 获取/设置元素的标签体纯文本内容 内容 --> 内容
3. val(): 获取/设置元素的value属性值
\2. 属性操作
4. 通用属性操作
5. attr(): 获取/设置元素的属性
6. removeAttr():删除属性
7. prop():获取/设置元素的属性
8. removeProp():删除属性
- attr和prop区别?
1. 如果操作的是元素的固有属性,则建议使用prop
2. 如果操作的是元素自定义的属性,则建议使用attr
2. 对class属性操作
1. addClass():添加class属性值
2. removeClass():删除class属性值
3. toggleClass():切换class属性
- toggleClass("one"):
如果元素对象上存在class="one",则将属性值one删除掉。 如果元素对象上不存在class="one",则添加
4. css():
\3. CRUD操作:
5. append():父元素将子元素追加到末尾
- 对象1.append(对象2): 将对象2添加到对象1元素内部,并且在末尾
2. prepend():父元素将子元素追加到开头
- 对象1.prepend(对象2):将对象2添加到对象1元素内部,并且在开头
3. appendTo():
- 对象1.appendTo(对象2):将对象1添加到对象2内部,并且在末尾
4. prependTo():
- 对象1.prependTo(对象2):将对象1添加到对象2内部,并且在开头
5. after():添加元素到元素后边
- 对象1.after(对象2): 将对象2添加到对象1后边。对象1和对象2是兄弟关系
6. before():添加元素到元素前边
- 对象1.before(对象2): 将对象2添加到对象1前边。对象1和对象2是兄弟关系
7. insertAfter()
- 对象1.insertAfter(对象2):将对象2添加到对象1后边。对象1和对象2是兄弟关系
8. insertBefore()
- 对象1.insertBefore(对象2): 将对象2添加到对象1前边。对象1和对象2是兄弟关系
9. remove():移除元素
- 对象.remove():将对象删除掉
10. empty():清空元素的所有后代元素。
- 对象.empty():将对象的后代元素全部清空,但是保留当前对象以及其属性节点
8.JQuery 高级
8.1.动画
1. 三种方式显示和隐藏元素
1. 默认显示和隐藏方式
1. show([speed,[easing],[fn]])
1. 参数:
1. speed:动画的速度。三个预定义的值("slow","normal", "fast")或表示动画时长的毫秒数值(如:1000)
2. easing:用来指定切换效果,默认是"swing",可用参数"linear"
- swing:动画执行时效果是 先慢,中间快,最后又慢
:动画执行时速度是匀速的
-
fn:在动画完成时执行的函数,每个元素执行一次。
e([speed,[easing],[fn]])
-
toggle([speed],[easing],[fn])
滑动显示和隐藏方式
-
slideDown([speed],[easing],[fn])
slideUp([speed,[easing],[fn]])-
slideToggle([speed],[easing],[fn])
淡入淡出显示和隐藏方式
1. fadeIn([speed],[easing],[fn])
fadeOut([speed],[easing],[fn])
3. fadeToggle([speed,[easing],[fn]])
-
-
-
8.2 遍历
1. js的遍历方式
- for(初始化值;循环结束条件;步长)
2. jq的遍历方式
1. jq对象.each(callback)
1. 语法:
jquery对象.each(function(index,element){});
-
index:就是元素在集合中的索引
ement:就是集合中的每一个元素对象- this:集合中的每一个元素对象
2. 回调函数返回值:
- true:如果当前function返回为false,则结束循环(break)。
lse:如果当前function返回为true,则结束本次循环,继续下次循环(continue)
2. $.each(object, [callback])
3. for..of: jquery 3.0 版本之后提供的方式
for(元素对象 of 容器对象)
8.3事件绑定
\1. jquery标准的绑定方式
-
jq对象.事件方法(回调函数);
-
注:如果调用事件方法,不传递回调函数,则会触发浏览器默认行为。
-
表单对象.submit();//让表单提交
\2. on绑定事件/off解除绑定 -
jq对象.on("事件名称",回调函数)
-
jq对象.off("事件名称")
-
如果off方法不传递任何参数,则将组件上的所有事件全部解绑
\3. 事件切换:toggle -
jq对象.toggle(fn1,fn2...)
-
当单击jq对象对应的组件后,会执行fn1.第二次点击会执行fn2.....
-
注意:1.9版本 .toggle() 方法删除,jQuery Migrate(迁移)插件可以恢复此功能。
4. 案例
\1. 广告显示和隐藏
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>广告的自动显示与隐藏</title>
<style> #content {
width: 100%;
height: 500px;
background: #999
} </style> <!--引入jquery-->
<script type="text/javascript" src="../js/jquery-3.3.1.min.js"></script>
<script>
/*需求:
1. 当页面加载完,3秒后。自动显示广告
2. 广告显示5秒后,自动消失。
分析:
1. 使用定时器来完成。setTimeout (执行一次定时器)
2. 分析发现JQuery的显示和隐藏动画效果其实就是控制display
3. 使用 show/hide方法来完成广告的显示 */
//入口函数,在页面加载完成之后,定义定时器,调用这两个方法
$(function () {
//定义定时器,调用adShow方法 3秒后执行一次
setTimeout(adShow,3000);
//定义定时器,调用adHide方法,8秒后执行一次
setTimeout(adHide,8000);
});
//显示广告
function adShow() {
//获取广告div,调用显示方法
$("#ad").show("slow");
}
//隐藏广告
function adHide() {
//获取广告div,调用隐藏方法
$("#ad").hide("slow");
}
</script>
</head>
<body> <!-- 整体的DIV -->
<div> <!-- 广告DIV -->
<div id="ad" style="display: none;"><img style="width:100%" src="../img/adv.jpg"/></div>
<!-- 下方正文部分 -->
<div id="content"> 正文部分</div>
</div>
</body>
</html>
\2. 抽奖
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jquery案例之抽奖</title>
<script type="text/javascript" src="../js/jquery-3.3.1.min.js"></script>
<script language='javascript'
type='text/javascript'>
/* 分析:
1. 给开始按钮绑定单击事件
1.1 定义循环定时器
1.2 切换小相框的src属性
* 定义数组,存放图片资源路径
* 生成随机数。数组索引
2. 给结束按钮绑定单击事件
1.1 停止定时器
1.2 给大相框设置src属性 */
var imgs = ["../img/man00.jpg", "../img/man01.jpg", "../img/man02.jpg", "../img/man03.jpg", "../img/man04.jpg", "../img/man05.jpg", "../img/man06.jpg",];
var startId;
//开始定时器的id
var index;//随机角标
$(function () {
//处理按钮是否可以使用的效果
$("#startID").prop("disabled",false);
$("#stopID").prop("disabled",true);
//1. 给开始按钮绑定单击事件
$("#startID").click(function () {
// 1.1 定义循环定时器 20毫秒执行一次
startId = setInterval(function () {
//处理按钮是否可以使用的效果
$("#startID").prop("disabled",true);
$("#stopID").prop("disabled",false);
//1.2生成随机角标 0-6
index = Math.floor(Math.random() * 7);
//0.000--0.999 --> * 7 --> 0.0-----6.9999
//1.3设置小相框的src属性
$("#img1ID").prop("src",imgs[index]);
},20); });
//2. 给结束按钮绑定单击事件
$("#stopID").click(function () {
//处理按钮是否可以使用的效果
$("#startID").prop("disabled",false);
$("#stopID").prop("disabled",true);
// 1.1 停止定时器
clearInterval(startId);
// 1.2 给大相框设置src属性
$("#img2ID").prop("src",imgs[index]).hide();
//显示1秒之后
$("#img2ID").show(1000);
});
});
</script>
</head>
<body>
<!-- 小像框 -->
<div style="border-style:dotted;width:160px;height:100px">
<img id="img1ID" src="../img/man00.jpg"
style="width:160px;height:100px"/>
</div>
<!-- 大像框 -->
<div style="border-style:double;width:800px;height:500px;position:absolute;left:500px;top:10px">
<img id="img2ID" src="../img/man00.jpg" width="800px"height="500px"/>
</div>
<!-- 开始按钮 -->
<input id="startID" type="button" value="点击开始" style="width:150px;height:150px;font-size:22px">
<!-- 停止按钮 -->
<input id="stopID" type="button" value="点击停止" style="width:150px;height:150px;font-size:22px">
</body>
</html>
\5. 插件:增强JQuery的功能
\1. 实现方式:
\1. $.fn.extend(object)
* 增强通过Jquery获取的对象的功能 $("#id")
\2. $.extend(object)
* 增强JQeury对象自身的功能 $/jQuery
练习
1.事件
// 第一种
$('#d1').click(function () {
alert('别说话 吻我')
});
// 第二种(功能更加强大 还支持事件委托)
$('#d2').on('click',function () {
alert('借我钱买草莓 后面还你')
})
* 克隆事件
<button id="d1">屠龙宝刀,点击就送</button>
<script>$('#d1').on('click',function () {
// console.log(this)
// this指代是当前被操作的标签对象
// $(this).clone().insertAfter($('body'))
// clone默认情况下只克隆html和css 不克隆事件
$(this).clone(true).insertAfter($('body'))
// 括号内加true即可克隆事件
})
</script>
2.自定义模态框
模态框内部本质就是给标签移除或者添加上hide属性
* 左侧菜单
<script>$('.title').click(function () {
// 先给所有的items加hide
$('.items').addClass('hide')
// 然后将被点击标签内部的hide移除
$(this).children().removeClass('hide')})
</script>
<!--尝试用一行代码搞定上面的操作-->
3.返回顶部
<script>
$(window).scroll(function () {
if($(window).scrollTop() > 300){$('#d1').removeClass('hide')}else{$('#d1').addClass('hide')}})
</script>
4. 自定义登陆校验
# 在获取用户的用户名和密码的时候 用户如果没有填写 应该给用户展示提示信息
<p>username:<input type="text" id="username"><span style="color: red"></span></p>
<p>password:<input type="text" id="password"><span style="color: red"></span></p><button id="d1">提交</button><script>let $userName = $('#username')let $passWord = $('#password')$('#d1').click(function () {// 获取用户输入的用户名和密码 做校验let userName = $userName.val()let passWord = $passWord.val()if (!userName){$userName.next().text("用户名不能为空")}if (!passWord){$passWord.next().text('密码不能为空')}})$('input').focus(function () {$(this).next().text('')})</script>
5.input实时监控
<input type="text" id="d1"><script>$('#d1').on('input',function () {console.log(this.value)})</script>
6.hover事件
<script>// $("#d1").hover(function () { // 鼠标悬浮 + 鼠标移开// alert(123)// })$('#d1').hover(function () {alert('我来了') // 悬浮},function () {alert('我溜了') // 移开})</script>
7.键盘按键按下事件.
<script>$(window).keydown(function (event) {console.log(event.keyCode)if (event.keyCode === 16){alert('你按了shift键')}})</script>
8.阻止后续事件执行
<script>$('#d2').click(function (e) {$('#d1').text('宝贝 你能看到我吗?')// 阻止标签后续事件的执行 方式1// return false// 阻止标签后续事件的执行 方式2// e.preventDefault()})</script>
9.阻止事件冒泡
<script>$('#d1').click(function () {alert('div')})$('#d2').click(function () {alert('p')})$('#d3').click(function (e) {alert('span')// 阻止事件冒泡的方式1// return false// 阻止事件冒泡的方式2// e.stopPropagation()})</script>
10.事件委托
<button>是兄弟,就来砍我!!!</button><script>// 给页面上所有的button标签绑定点击事件// $('button').click(function () { // 无法影响到动态创建的标签// alert(123)// })// 事件委托$('body').on('click','button',function () {alert(123) // 在指定的范围内 将事件委托给某个标签 无论该标签是事先写好的还是后面动态创建的})</script>
11.页面加载
# 等待页面加载完毕再执行代码window.onload = function(){// js代码}"""jQuery中等待页面加载完毕"""# 第一种$(document).ready(function(){// js代码})# 第二种$(function(){// js代码})# 第三种"""直接写在body内部最下方"""
12.动画效果
$('#d1').hide(5000)w.fn.init [div#d1]$('#d1').show(5000)w.fn.init [div#d1]$('#d1').slideUp(5000)w.fn.init [div#d1]$('#d1').slideDown(5000)w.fn.init [div#d1]$('#d1').fadeOut(5000)w.fn.init [div#d1]$('#d1').fadeIn(5000)w.fn.init [div#d1]$('#d1').fadeTo(5000,0.4)w.fn.init [div#d1]
Ajax
Asynchronous JavaScript And XML(异步的JavaScript和XML)
Ajax可以在不刷新页面的前提下,进行页面局部更新
1. 概念:
ASynchronous JavaScript And XML 异步的JavaScript 和 XML
1. 异步和同步:客户端和服务器端相互通信的基础上
-
客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。
-
客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作。
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 [1]
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。
提升用户的体验
2. 实现方式:
//1.创建核心对象
var XHR=false;
function createXHR(){
if(window.XMLHttpRequest){
XHR=new XMLHttpRequest();
}else{
XHR=new ActiveXObject("Microsoft.XMLHTTP");
}
}
//2. 建立连接
function checkUsername(){
var username=document.getElementById("check").value;
createXHR();
XHR.open("get","checkUsername?username="+username,true);
/* 1. 请求方式:GET、POST
* get方式,请求参数在URL后边拼接。send方法为空参
* post方式,请求参数在send方法中定义
2. 请求的URL:
3. 同步或异步请求:true(异步)或 false(同步)
4.接受并处理来自服务器的响应结果 */
XHR.onreadystatechange=showMsgCallback;
XHR.setRequestHeader("Content-type","application/x-www-form-urlencoded");
XHR.send();
}
function showMsgCallback(){
if(XHR.readyState==4){
if(XHR.status==200){
var text=XHR.responseText.toString();
alert(text=='no');
console.log(text);
if(text=="yes"){
alert(1);
document.getElementById("msg").innerHTML="此用户名已注册!";
}
else if(text=="no")
{
alert(2);
document.getElementById("msg").innerHTML="此用户可以注册";
}
}
}
}
- JQeury实现方式
$(document).ready(function() {
$('#button1').click(function() {
var text = $('#msg1');
$.ajax({
type : "POST",
url : "jquery",
data : "username=ssss",
dataType : 'text',
success : function(result) {
if (result=="success") {
text.text("");
text.append("成功");
}else{
text.text("");
text.append("失败");
}
},
error : function() {
text.text("");
text.append("操作出错");
}
});
});
});
$(document).ready(function(){
$('#button2').click(function(){
var text = $('#msg2');
$.post('jquery', 'username=xxxx',function(result){
if (result==="success") {
text.text("成功");
}else{
text.text("失败");
}
},'text');
});
});
$(document).ready(function(){
$('#button3').click(function(){
var text = $('#msg3');
$.get('jquery','username=zzzzz',function(result){
if (result==="success") {
text.text("成功");
}else{
text.text("失败");
}
});
});
});
导入fastjson注意
3.Ajax的使用流程
1.创建XmlHttpReqeust对象 用在与后台服务器交换数据,是Ajax核心
var xmlhttp;
if (window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp = new XMLHttpRequest();
}else{
// IE6, IE5 浏览器执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
2.发送Ajax请求
//创建请求xmlhttp.open("GET","http://localhost/test?name=admin",true);//请求方法,映射地址,异步同步
//发送到服务器 xmlhttp.send();
3.处理服务器响应
xmlhttp.onreadystatechange()事件用于监听AJAX的执行事件xmlhttp.readyState 属性说明XMLHttpRrquest当前状态
readyState值 | 说明 |
---|---|
0 | 请求未初始化 |
1 | 服务器已被建立 |
2 | 请求已被接收 |
3 | 请求正在处理 |
4 | 响应文本已被接收 |
xmlhttp.status 属性服务器响应状态码200成功 404未找到
xmlhttp.onreadystatechange=function(){
//响应已被接收且服务器处理成功时才执行
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
//获取响应体的文本
var responseText = xmlhttp.responseText;
//对服务器结果进行处理 ...
}
}
4.jQuery对Ajax的支持
jQuery对AJAX进行封装,提供了$.ajax()方法
语法:$.ajax(options)
常用设置项 | 说明 |
---|---|
url | 发送请求地址 |
type | 请求参数get post |
data | 向服务器传递的参数 |
dadaType | 服务器响应的数据类型text|json|xml|jsonp|script |
succcess | 接收响应时处理的函数 |
error | 请求失败时的处理函数 |
5.从ajax方法衍生的简化方法
常用项设置 | 说明 |
---|---|
$.get() | 发送get方式ajax请求 |
$.post() | 发送post方式ajax请求 |
$ajaxSetup() | 设置全局默认值 |
前端框架Bootstrap
1.简介
该框架已经帮你写好了很多页面样式,你如果需要使用,只需要下载它对应文件,之后直接cv拷贝即可
在使用Bootstrap的时候所有的页面样式都只需要你通过class来调节即可
版本选择建议使用v3版本:https://v3.bootcss.com/
注意
bootstrap的js代码是依赖于jQuery的,也就意味着你在使用Bootstrap动态效果的时候,一定要导入jQuery
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
2.CV大法
https://v3.bootcss.com/css/#grid-responsive-resets
3.布局容器
<div class="container">左右两侧有留白</div>
<div class="container-fluid">左右两侧没有留白</div># 后续在使用bootstrap做页面的时候 上来先写一个div class="container",之后在div内部书写页面
4.栅格系统
<div class="row"></div>写一个row就是将所在的区域划分成12份<div class="col-md-6 "> 获取你所要的份数# 在使用bootstrap的时候 脑子里面一定要做12的加减法
4.1栅格参数
.col-xs- .col-sm- .col-md- .col-lg-# 针对不同的显示器 bootstrap会自动选择对应的参数# 如果你想要兼容所有的显示器 你就全部加上即可# 在一行如何移动位置<div class="col-md-8 c1 col-md-offset-2"></div> #从左到右移动两个位置
4.2栅格参数
通过下表可以详细查看 Bootstrap 的栅格系统是如何在多种屏幕设备上工作的。
超小屏幕 手机 (<768px) | 小屏幕 平板 (≥768px) | 中等屏幕 桌面显示器 (≥992px) | 大屏幕 大桌面显示器 (≥1200px) | |
---|---|---|---|---|
栅格系统行为 | 总是水平排列 | 开始是堆叠在一起的,当大于这些阈值时将变为水平排列C | ||
.container 最大宽度 |
None (自动) | 750px | 970px | 1170px |
类前缀 | .col-xs- |
.col-sm- |
.col-md- |
.col-lg- |
水平排列 .col-md-8 .col-md-4
列偏移 .col-md-offset-3
4.3排版
bootstrap将所有原生的HTML标签的文本字体统一设置成了肉眼可以接受的样式
效果一样,但是标签表达的意思不一样(语义)
5组件
5.1 轮播图
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="bootstrap.min.css">
<script src="bootstrap.min.js"></script>
<script src="jquery-3.5.1.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-2"></div>
</div>
</div>
</body>
</html>
5.2表格
<table class="table table-hover table-striped table-bordered"> 表格 悬浮 层次分明 边框
<tr class="success">
<td>1</td>
<td>jason</td>
<td>123</td>
<td>study</td>
</tr>
<tr class="active">...</tr>
<tr class="success">...</tr>
<tr class="warning">...</tr>
<tr class="danger">...</tr>
<tr class="info">...</tr>
状态类 通过这些状态类可以为行或单元格设置颜色。
Class | 描述 |
---|---|
.active |
鼠标悬停在行或单元格上时所设置的颜色 |
.success |
标识成功或积极的动作 |
.info |
标识普通的提示信息或动作 |
.warning |
标识警告或需要用户注意 |
.danger |
标识危险或潜在的带来负面影响的动作 |
5.3表单
<div class="col-md-8 col-md-offset-2"><h2 class="text-center">登陆页面</h2>
<form action=""><p>username:<input type="text" class="form-control"></p>
<p>password:<input type="text" class="form-control"></p>
<p><select name="" id="" class="form-control">
<option value="">111</option>
<option value="">222</option>
<option value="">333</option>
</select></p>
<textarea name="" id="" cols="30" rows="10" class="form-control"></textarea><input type="submit"></form>
</div>
</div>
# 针对表单标签 加样式就用form-controlclass="form-control""""<input type="checkbox">222<input type="radio">333checkbox和radio我们一般不会给它加form-control,多选单选直接使用原生的即可"""#
针对报错信息 可以加has-error(input的父标签加)<p class="has-error">username:<input type="text" class="form-control"></p>
5.4按钮
<a href="https://www.mzitu.com/" class="btn btn-primary">点我</a>
<button class="btn btn-danger">按我</button>
<button class="btn btn-default">按我</button>
<button class="btn btn-success">按我</button>
<button class="btn btn-info">按我</button>
<button class="btn btn-warning">按我</button>
</div>
<p>
<button type="button" class="btn btn-primary btn-lg">(大按钮)Large button</button>
<button type="button" class="btn btn-default btn-lg">(大按钮)Large button</button>
</p>
<p>
<button type="button" class="btn btn-primary">(默认尺寸)Default button</button>
<button type="button" class="btn btn-default">(默认尺寸)Default button</button>
</p>
<p>
<button type="button" class="btn btn-primary btn-sm">(小按钮)Small button</button>
<button type="button" class="btn btn-default btn-sm">(小按钮)Small button</button>
</p>
<p>
<button type="button" class="btn btn-primary btn-xs">(超小尺寸)Extra small button</button>
<button type="button" class="btn btn-default btn-xs">(超小尺寸)Extra small button</button>
</p>
通过给按钮添加 .btn-block 类可以将其拉伸至父元素100%的宽度,而且按钮也变为了块级(block)元素。
5.5图片
<img src="..." alt="..." class="img-rounded">
<img src="..." alt="..." class="img-circle">
<img src="..." alt="..." class="img-thumbnail">
5.6图标
http://www.fontawesome.com.cn/
<h2 class="text-center">登陆页面 <span class="glyphicon glyphicon-user"></span></h2>
<span class="glyphicon glyphicon-th"></span>
<style> span { color: greenyellow; } </style>
5.7导航条
<nav class="navbar navbar-inverse">
<nav class="navbar navbar-default">
5.8分页器
<nav aria-label="Page navigation">
<ul class="pagination">
<li>
<a href="#" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<li class="active"><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li>
<a href="#" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
5.9弹框
https://lipis.github.io/bootstrap-sweetalert/
https://www.sweetalert.cn/guides.html#advanced-examples
swal('你还好吗?')
undefined
swal('你还好吗?')
undefined
swal('你还好吗?','我不好,想你了!')
undefined
swal('你还好吗?','我不好,想你了!','success')
undefined
swal('你还好吗?','我不好,想你了!','warning')
undefined
swal('你还好吗?','我不好,想你了!','error')
undefined
swal('你还好吗?','我不好,想你了!','info')
undefined
# 我们在后面的课程中 还会涉及到该部分内容