jQ案例+AJAX

一、jQuery案例

1.属性
1.1overflow

代码演示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			div{
				background-color: cyan;
				width: 150px;
				height: 150px;
				overflow: visible;
			}
		</style>
	</head>
	<body>
		<!--
			overflow:溢出元素内容区域的内容会做出如何的处理
			
			
			visible:默认值,内容不会被修剪,会呈现在元素之外
			hidden:内容会被修剪,并且多余的内容是不可见的
			scroll:内容会被修剪,但是,浏览器会显示滚动条显示多余的内容
			auto:如果内容会被修剪,浏览器会显示滚动条显示多余的内容
			inherit:从父标签 继承overflow的属性	
		-->
		
		<div>
			visible:默认值,内容不会被修剪,会呈现在元素之外
			hidden:内容会被修剪,并且多余的内容是不可见的
			scroll:内容会被修剪,但是,浏览器会显示滚动条显示多余的内容
			auto:如果内容会被修剪,浏览器会显示滚动条显示多余的内容
			inherit:从父标签 继承overflow的属性	
		</div>
	</body>
</html>
1.2cursor

代码演示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<!--
			cursor:定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状
			
		-->
		<span style="cursor: auto;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: crosshair;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: default;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: pointer;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: move;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: e-resize;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: ne-resize;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: nw-resize;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: n-resize;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: se-resize;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: sw-resize;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: s-resize;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: w-resize;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: text;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: wait;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
		<span style="cursor: help;">定义了鼠标指针放在一个元素的边界范围内呈现出来的光标形状</span><br />
	</body>
</html>
2.选项卡

html文件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--引入外部文件-->
		<link rel="stylesheet" type="text/css" href="css/style.css" />
		
		<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
	</head>
	<body>
		
		<!--整体-->
		<div id="box">
			<!--active:表示哪个块被选中-->
			<!--导航-->
			<ul id="menu">
				<li class="active">手机通讯</li>
				<li>手机通讯</li>
				<li>手机通讯</li>
				<li>手机通讯</li>
				<li>手机通讯</li>
				<li>手机通讯</li>
			</ul>
			
			<!--详细内容-->
			<div id="panel">
				<div class="panel active">
					<img src="img/images/1.jpg" />
					<div class="title">京东家电</div>
					<ul class="list">
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
					</ul>
				</div>
				
				<div class="panel">
					<img src="img/images/2.jpg" />
					<div class="title">京东家电</div>
					<ul class="list">
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
					</ul>
				</div>
				
				<div class="panel">
					<img src="img/images/3.jpg" />
					<div class="title">京东家电</div>
					<ul class="list">
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
					</ul>
				</div>
				
				<div class="panel">
					<img src="img/images/4.jpg" />
					<div class="title">京东家电</div>
					<ul class="list">
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
					</ul>
				</div>
				
				<div class="panel">
					<img src="img/images/5.jpg" />
					<div class="title">京东家电</div>
					<ul class="list">
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
					</ul>
				</div>
				
				<div class="panel">
					<img src="img/images/6.jpg" />
					<div class="title">京东家电</div>
					<ul class="list">
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
						<li>买电视立即省1800元</li>
					</ul>
				</div>
			</div>
			
		</div>
		
		<script type="text/javascript" src="js/choice.js"></script>
	</body>
</html>

css文件

/*全局设置*/
*{
	padding: 0px;
	margin: 0px;
	font-size: 12px;
}


/*设置所有的无序列表*/
ul{
	list-style: none;
}

/*整体设置*/
#box{
	margin: 50px auto;
	width: 550px;
}

/*设置导航*/
#menu{
	/*单词,rgb() ,#ffffff------>#fff*/
	background: #eee;
	/*处理溢出的部分*/
	overflow: hidden;
}

/*设置导航中的li*/
#menu li{
	float: left;
	width: 85px;
	line-height: 30px;
	text-align: center;
	border: 1px solid #eee;
	border-bottom-color: #ccc;
	border-top-width: 2px;
	cursor: pointer;	
}

/*设置导航被选中的样式*/
#menu .active{
	border-left-color: #ccc;
	border-right-color: #ccc;
	border-top-color: blue;
	border-bottom-color: #fff;
	background: #fff;
}

/*设置每一块的内容*/
#panel .panel{
	/*将每一块都隐藏*/
	display: none;
	margin: 10px 0px;
	overflow: hidden;
}

/*单独设置第一块,将其显示*/
#panel .active{
	/*block或者inline-block都可以*/
	display: block;
}

#panel .panel img{
	float: left;
}

#panel .panel .title{
	margin-left: 280px;
	padding-bottom: 10px;
	border-bottom:1px solid #ccc;
}

#panel .panel .list{
	margin-left: 280px;
}

#panel .panel .list li{
	float: left;
	line-height: 25px;
	margin-top: 10px;
	text-decoration: underline;
}

js文件


//页面加载响应函数
$(function(){
	//给导航中的li添加单击事件
	$("#menu li").bind("click",function(){
		
		//一、导航的切换
		//1.清空所有li的class
		//$("#menu li").removeClass("active");
		
		
		//2.给选中的li添加新的class
		//eq():获取第几个子标签   
		//index():获取当前被操作的标签的下标
		//$("#menu li").eq($(this).index()).addClass("active");
		
		
		//将上面的两部合并为一步:
		$("#menu li").removeClass("active").eq($(this).index()).addClass("active");
		
		//二、内容的切换
		$("#panel .panel").removeClass("active").eq($(this).index()).addClass("active");
	})
})
3.微信场景页

Swiper:是js封装的滑动特效插件

html文件

<html>
	<head>
	<meta charset="UTF-8">
	<title></title>
	<!--引入css文件-->
	<link rel="stylesheet" type="text/css" href="css/wechat.css"/>
	<!--引入jQuery文件-->
	<script src="js/jquery-3.3.1.js"></script>
	<!--引入swipe文件-->
	<script src="js/jquery.touchSwipe.min.js" type="text/javascript" charset="utf-8"></script>
	
</head>
<body>
	<div id="container">
		<!--第一页-->
		<div class="page page1">
			<!--背景图-->
			<img src="img/indexBuilding.png" class="page1_building" />
			<!--转角遇到爱的文字-->
			<img src="img/indexTxt.png" class="page1_title"/>
			<!--设置云-->
			<img src="img/indexCloud.png" class="page1_cloud" />
			<!--其他元素-->
			<img src="img/indexElements.png" class="page1_elements" />
			<!--两朵太阳花-->
			<img src="img/indexFlowers01.png" class="page1_leftflower" />
			<img src="img/indexFlowers02.png" class="page1_rightflower" />
			<!--人-->
			<img src="img/indexFlight.png" class="page1_person"/>
		</div>
		
		<!--第二页-->
		<div class="page page2">
			<img src="img/wasBg.jpg" class="page2_back"/>
			<img src="img/wasFarm.png" class="page2_title1" />
			<img src="img/wasIT.png" class="page2_title2"/>
		</div>
		
		<!--第三页-->
		<div class="page page3">
			<img src="img/lastBusStation.png" class="page3_back"/>
			<img src="img/earlyTitle.png" class="page3_early" />
			<img src="img/lastBusTitle.png" class="page3_last" />
			<img src="img/bus.png" class="page3_bus" />
			<img src="img/lastBusAvatar.png" class="page3_person" />
		</div>
		
		<!--第四页-->
		<div class="page page4">
			<!--场景1-->
			<img src="img/lightOffBg.jpg" class="page4_back1" />
			<img src="img/cornerTitle.png" class="page4_title1" />
			<img src="img/clickGuide.png" class="page4_guide"/>
			
			<!--场景2-->
			<img src="img/lightOnBg.jpg" class="page4_back2" />
			<img src="img/weKnowYou.png" class="page4_title2" />
			
			<!--场景1 和 场景2 共同的灯  点击事件 切换图片-->
			<img src="img/lightOff.png" class="page4_light" onclick="onlight(this)"/>
		</div>
	</div>
	
	
	<!--引入js文件-->
	<script src="js/wechat.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>

css文件

*{
	margin: 0;
	padding: 0;
}
/*设置容器有效的定位属性 --- 设置容器的移动*/
#container{
	position: absolute;
}

/*设置第一页*/
.page1{
	background-color: red;
	/*设置定位属性当做参照物*/
	position: relative;
}
/*设置背景图*/
.page1_building{
	position: absolute;
	bottom: 0px;
	width: 100%;
	/*默认是隐藏的 -- 便于之后设计淡入的效果*/
	display: none;
}
/*设置第一页的标题*/
.page1_title{
	position: absolute;
	height: 60%;
	top: 20%;
	left: 20%;
}
/*设置云和其他元素*/
.page1_cloud, .page1_elements{
	position: absolute;
	width: 70%;
	height: 70%;
	left: 15%;
	top: 15%;
	animation: zoomAnimate 2s infinite linear;
}
/*设定一个动画: 云和其他元素一直运动*/
@keyframes zoomAnimate{
	0%{
		transform: scale(1);
	}
	50%{
		transform: scale(1.2);
	}
	100%{
		transform: scale(1);
	}
}
/* 设置小花*/
.page1_leftflower{
	position: absolute;
	left: 15%;
	top: 10%;
	animation: flowerAnimate 2s infinite linear;
}

.page1_rightflower{
	position: absolute;
	top: 10%;
	right: 15%;
	animation: flowerAnimate 2s infinite linear;
}
/*设置花的动画*/
@keyframes flowerAnimate{
	0%{transform: rotate(-20deg);}
	25%{transform: rotate(0deg);}
	50%{transform: rotate(20deg);}
	75%{transform: rotate(0deg);}
	100%{transform: rotate(-20deg);}
}

/* 设置人*/
.page1_person{
	position: absolute;
	bottom: 30%;
	left: -100%;
	/*人进来之后是慢慢变大的*/
	width: 0;
	animation: zoomAnimate 2s infinite linear;
}

/*第二页*/
.page2{
	background-color: blue;
	/*将其设置为参照物*/
	position: relative;
}

/*设置第二页的背景图*/
.page2_back{
	width: 100%;
	height: 100%;
	/*为了设置淡入的效果*/
	display: none;
}
.page2_title1, .page2_title2{
	position: absolute;
	right: -100%;
	width: 0px;
}

.page2_title1{
	top: 30%;
}
.page2_title2{
	top: 60%;
}

/*第三页*/
.page3{
	background-color: orange;
	/*设置为参照物*/
	position: relative;
}
.page3_back{
	width: 100%;
	height: 100%;
}

/*凌晨 最后一班车*/
.page3_early, .page3_last{
	position: absolute;
	left: 0px;
	height: 5%;
}
.page3_early{
	top: 10%;
}
.page3_last{
	top: 17%;
}
/*设置车*/
.page3_bus{
	position: absolute;
	left: 0px;
	bottom: 10%;
	width: 50%;
}

/*
 * 设置人
 */
.page3_person{
	position: absolute;
	right: 0;
	bottom: 10%;
}

/*第四页*/
.page4{
	background-color: yellow;
	/*设置为参照物*/
	position: relative;
}

/*场景1*/
.page4_back1{
	width: 100%;
	height: 100%;
}
/*标题*/
.page4_title1{
	position: absolute;
	right: 0px;
	top: 15%;
	width: 50%;
}
/*设置灯*/
.page4_light{
	position: absolute;
	bottom: 0px;
	left: 6%;
	height: 70%;
}
/*开灯引语*/
.page4_guide{
	width: 50%;
	position: absolute;
	left: 18%;
	top: 40%;
	animation: zoomAnimate 2s infinite linear;
}

/*场景二的样式*/
.page4_back2{
	width: 100%;
	height: 100%;
	display: none;
}
.page4_title2{
	position: absolute;
	width: 50%;
	left: 25%;
	top: 40%;
	display: none;
}

js文件

//定义一个变量,用于记录当前的页码
var currentPage = 0;

$(function(){
	
	//1.获取窗口的大小
	var w_width = window.innerWidth;
	var h_height = window.innerHeight;
	
	
	//2.设置整个容器的大小
	var container = $("#container");
	container.width(w_width);
	container.height(h_height * 4);
	
	
	//设置每一页的大小
	var page = $(".page");
	page.width(w_width);
	page.height(h_height);
	

	//3.设置第一页
	//背景有一个淡入的效果,人有一个飞入的效果
	$(".page1_building").fadeIn(1000,function(){
		
		//人飞进来
		$(".page1_person").animate({"left":"15%","width":"70%"},1500);
		
	});
	
	//向上滑动翻页
	//Swipe插件的使用,swipe(),参数为字典,只有一对键值对,键是固定的,就是swipe,对应的值为一个函数
	container.swipe({
		/*
		 * event:事件对象
		 * direction:滑动的方向
		 * distance:滑动的距离
		 * duration:滑动过程持续的时间
		 * fingerCount:使用几根手指头
		 */
		swipe:function(event,direction,distance,duration,fingerCount){
			//up:向上    down:向下   left、right
			if(direction == "up"){
				//第一页切换到第二页
				currentPage++;
			}else if(direction == "down"){
				currentPage--;
			}
			
			//currentpage的取值范围:0~3
			//判断临界值
			if(currentPage > 3){
				currentPage = 3;
			}
			if(currentPage < 0){
				currentPage = 0;
			}
			
			//操作一个事件:容器向上滑动一页的时候,距离窗口的上边沿的间距为-(一个屏幕的高度)
			//top---->设置容器的有效定位
			container.animate({"top":currentPage * (-h_height) + "px"},400,function(){
				//第二页
				if(currentPage == 1){
					
					//背景图淡入
					$(".page2_back").fadeIn(1000,function(){
						//文本1动画进入
						$(".page2_title1").animate({"right":"0px","width":"70%"},1000,function(){
							//文本2动画进入
							$(".page2_title2").animate({"right":"0px","width":"70%"},1000);
							
						});
					});
						
				}
				
				
				//第三页
				if(currentPage == 2){
					$(".page3_bus").animate({"left":"-100%"},2000);
					$(".page3_person").animate({"right":"50%"},2000);
				}
				
			});
		}
	})
	
})


function onlight(img){
	//修改灯的图片
	img.src = "img/lightOn.png";
	
	
	//场景1淡出,淡出成功之后,场景2淡入
	$(".page4_back1").fadeOut("slow");
	$(".page4_title1").fadeOut("slow");
	$(".page4_guide").fadeOut("slow",function(){
		$(".page4_back2").fadeIn(500,function(){
			$(".page4_title2").fadeIn(500);
		})
	})
}

三、AJAX

1.ajax简介
1.1什么是ajax

AJAX,Asynchronous Javascript And XML,异步的javascript和xml

AJAX并不是一门新的编程语言,而是一种用于快速创建动态网页的技术

使用js与服务器之间进行交互,传输的数据可以是XML

交互方式:

​ 同步交互:客户端发出一个请求之后,需要等待服务端的响应,只有响应结束之后,才可以发送第二次请求

​ 异步交互:客户端发出一个请求之后,无需等待服务端的响应,就可以直接发送第二次请求

ajax除了异步的特点之外,还有一个使用:在浏览器中实现局部刷新【给用户的感受是在不知不觉中完成了一个请求和响应的过程】

1.2js实现局部刷新

代码演示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			#usernamespan{
				display: none;
			}
		</style>
	</head>
	<body>
		<form id="form1">
			<input type="text" name="username" id="input1"/>
			<span id="usernamespan">*用户名不能为空</span>
			<input type="submit" />
		</form>
		<script>
			window.onload = function(){
				var form = document.getElementById("form1");
				
				//绑定表单事件
				form.onsubmit = function(){  //给表单对象添加了一个监听
					//获取用户名input的value值
					var usernameValue = form.username.value;
					if(!usernameValue){
						
						//获取span对象
						var span = document.getElementById("usernamespan");
						span.style.display = "block";
						
						//阻止表单提交
						return false;
					}
					
					//内容是合法的,允许表单提交
					return true;
				}
			}
		</script>
	</body>
</html>
1.3ajax的使用场景

a.关键字搜索

b.页面局部刷新

1.4ajax的优缺点

优点:

​ a.ajax向服务器发出异步请求

​ b.无需刷新整个页面

​ c.性能较高,效率较高

缺点:

​ a.并不适用于所有的场景,在某些操作中还的使用同步交互

​ b.虽然提高了用户体验,但是无形中向服务器发送请求的次数增多,会增大服务器压力

​ c.还需要考虑浏览器的兼容问题

2.ajax的技术

四步操作

​ a.创建核心对象

​ b.使用核心对象打开和服务器之间的连接

​ c.发送请求

​ d.注册监听,监听服务器的响应

涉及到的类,属性和方法

​ a.XMLHTTPRequest类

​ b.open(请求方式,服务器地址,是否异步)

​ c.send(请求体)

​ d.onreadystatechange,指定监听函数,当核心对象的状态发生改变的时候会被触发

​ e.readyState:当前核心对象的状态,如果取值为4说明服务器响应结束

​ f.status:服务器响应的状态码,如果为200表示请求成功

​ g.reponseText:获取服务器的响应体

2.1表单get请求

代码演示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<!--
			url
			http://主机名:端口号/资源路径?key1=value1&key2=value2&.....
			
			
			http://10.20.152.27/formget.php?username=aaa&age=27&password=hello
			
			
			什么是表单:
				向服务器提交数据,
				action:提交到哪里
				method:提交的方式
				
				
			get请求:
				把数据名称和数据使用=连接起来,如果有多个键值对,则使用&连接,将连接好的数据拼接到url的?后面
				缺点:所有的信息会出现在地址栏中,不安全,最大为2kb,不适合上传大的数据
				优点:简洁,效率
		
		
			使用ip地址测试,可以是127.0.0.1【localhost】
		-->
		<form action="http://10.20.152.27/formget.php" method="get">
			<input type="text" name="username" />
			<input type="text" name="age" />
			<input type="text" name="password" />
			<input type="submit" />
		</form>
	</body>
</html>
2.2表单post请求

代码演示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<!--
			post:
			优点:安全,上传数据的大小在理论上没有限制,适合上传比较大的数据
			缺点:麻烦
		-->
		<form action="http://10.20.152.27/formpost.php" method="post">
			<input type="text" name="username" />
			<input type="text" name="age" />
			<input type="text" name="password" />
			<input type="submit" />
		</form>
	</body>
</html>
2.3AJAX get请求

代码演示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<button id="btn">获取密码和用户名</button>
		<script>
			window.onload = function(){
				//给按钮绑定点击事件,
				var btn = document.getElementById("btn");
				btn.onclick = function(){
					
					//向服务器发起请求
					//1.创建请求对象
					var xhr = null;
					
					//涉及到浏览器的兼容性问题
					//Python:try-except    js:try-catch
					try{
						xhr = new XMLHttpRequest();
					}catch(e){
						//IE5  IE6
						xhr = new ActiveXObject("Microsoft.XMLHTTP");
					}
					
					//2.与服务器建立连接
					/*
					 * open(请求方式,服务器的地址,是否需要异步)
					 * get:将上传的数据拼接在地址的后面
					 */
					//对参数中出现的中文需要进行编码,js:encodeURI(“中文”),将编码之后的结果传输
					xhr.open("get","http://10.20.152.27/ajaxget.php?username=" +  encodeURI("杨阳")  + "&age=16&password=abc123",true);
					
					//3.发起请求
					xhr.send();
					
					
					//4.建立监听,监听服务器的响应
					xhr.onreadystatechange = function(){
						//服务器响应的信息
						/*
						 * 有两个字段可以捕捉
						 * readystate:表示当前对象的状态
						 * 		1 2 3 4,取值为4则表示响应结束
						 * 
						 * status:服务器返回的响应码
						 * 		200:数据请求成功
						 * 		404:资源找不到
						 * 		400:加载错误
						 * 		500:数据库问题
						 * 
						 * responseText:保存的是服务器返回的响应信息
						 */
						if(xhr.readyState == 4){
							if(xhr.status == 200){
								alert("数据请求成功");
								alert(xhr.responseText);
							}else{
								alert("数据请求失败");
							}
						}
					}
					
				}
			}
		</script>
	</body>
</html>
2.4AJAX post请求

代码演示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<button id="btn">获取密码和用户名</button>
		<script>
			window.onload = function(){
				//给按钮绑定点击事件,
				var btn = document.getElementById("btn");
				btn.onclick = function(){
					
					//向服务器发起请求
					//1.创建请求对象
					var xhr = null;
					
					//涉及到浏览器的兼容性问题
					//Python:try-except    js:try-catch
					try{
						xhr = new XMLHttpRequest();
					}catch(e){
						//IE5  IE6
						xhr = new ActiveXObject("Microsoft.XMLHTTP");
					}
					
					//2.与服务器建立连接
					/*
					 * open(请求方式,服务器的地址,是否需要异步)
					 * post:将上传的数据拼接在地址的后面
					 */
					//对参数中出现的中文需要进行编码,js:encodeURI(“中文”),将编码之后的结果传输
					//username=" +  encodeURI("杨阳")  + "&age=16&password=abc123"
					xhr.open("post","http://10.20.152.27/ajaxpost.php?",true);
					
					//注意:使用post的方式请求服务器的时候,需要指定数据的编码格式
					//请求头:设置数据的编码格式,固定写法
					xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
					
					
					//3.发起请求
					//请求体
					var str = "username=" +  encodeURI("杨阳")  + "&age=16&password=abc123";
					xhr.send(str);
					
					
					//4.建立监听,监听服务器的响应
					xhr.onreadystatechange = function(){
						//服务器响应的信息
						/*
						 * 有两个字段可以捕捉
						 * readystate:表示当前对象的状态
						 * 		1 2 3 4,取值为4则表示响应结束
						 * 
						 * status:服务器返回的响应码
						 * 		200:数据请求成功
						 * 		404:资源找不到
						 * 		400:加载错误
						 * 		500:数据库问题
						 * 
						 * responseText:保存的是服务器返回的响应信息
						 */
						if(xhr.readyState == 4){
							if(xhr.status == 200){
								alert("数据请求成功");
								alert(xhr.responseText);
							}else{
								alert("数据请求失败");
							}
						}
					}
					
					/*
					 http://127.0.0.1:8020/Day10Code/8.ajax%E7%9A%84get%E8%AF%B7%E6%B1%82.html?__hbt=1544774103455
					 * */
				}
			}
		</script>
	</body>
</html>
2.5ajax应用

代码演示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<button id="btn">下载</button>
		<ul id="ul">
			
		</ul>
		
	
		<script>
			//需求1:封装函数,既可以进行get请求,也可以进行post请求
			//请求方式,请求服务器地址,需要发送的数据,请求成功之后的回调函数
			function ajax(method,url,data,successFn){
				//1.创建对象
				var xhr = null;
					
				try{
					xhr = new XMLHttpRequest();
				}catch(e){
					//IE5  IE6
					xhr = new ActiveXObject("Microsoft.XMLHTTP");
				}
				
				
				//2.与服务器之间建立连接
				//判断请求的方式,如果是get的话则需要进行更改url的形式
				if((method == "get" || method == "GET") && data){
					url += "?" + data;
				}
				
				xhr.open(method,url,true);
				
				
				//3.发送请求
				if(method == "get" || method == "GET"){
					xhr.send();
				}else{
					xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
					xhr.send(data);
				}
				
				//4.监听服务器的响应
				xhr.onreadystatechange = function(){
						
					if(xhr.readyState == 4){
						if(xhr.status == 200){
							//注意:ajax请求服务器之后,获取到的数据格式可能会不一样,我们自定义对数据的处理
							
							//调用回调函数,将请求成功之后得到的结果传参
							successFn(xhr.responseText);
							
						}else{
							alert("数据请求失败");
						}
					}
				}	
			}
			
			
			//需求2:请求服务器的新闻列表,使用无序列表显示出来
			window.onload = function(){
				//获取标签对象
				var btn = document.getElementById("btn");
				var ul = document.getElementById("ul");
				
				
				//绑定事件,点击按钮的时候向服务器发起请求
				btn.onclick = function(){
					
					ajax("get","http://10.20.152.27/news.php","",function(reponseData){
						
						//解析数据
						//返回的结果是一个数组
						var arr = JSON.parse(reponseData);
						
						//title和date被当做属性处理
						for(var i = 0;i < arr.length;i++){
							//arr[i]
							//创建标签的对象
							var li = document.createElement("li");
							var a = document.createElement("a");
							var span = document.createElement("span");
							
							//获取文本,并且设置为标签的文本
							a.innerHTML = arr[i].title;
							a.href = "#";
							
							span.innerHTML = "【" + arr[i].date + "】";
							
							//整合
							li.appendChild(a);
							li.appendChild(span);
							
							ul.appendChild(li);
								
						}
					})
				}
			}
		</script>
	</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值