jQuery文本内容和指针、AJAX(1)

一、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>

二、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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值