Ajax入门

Ajax入门


ajax介绍

  • Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。 [3] 使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。 [3]

  • 特点:局部刷新,异步访问

同步请求和异步请求

同步请求
  • 用户向服务器发起请求,如果服务器正忙,这时程序处于等待的状态.这时页面处于加载 ,同时用户不能操作.
  • img
异步请求
  • 在这里插入图片描述
  • 步骤:
    • 用户发起Ajax请求,Ajax内部机制将请求交给ajax引擎处理
    • Ajax引擎接收到用户的请求之后,重新发起一个请求,访问后端服务器
    • 当服务器端接收到了ajax请求之后,完成业务处理,之后将数据响应给Ajax引擎
    • Ajax引擎通过事先约定好的回调函数,将服务器数据交还给用户
    • 用户在请求的过程中,可以完成自己的任务
    • tips:多个Ajax的请求,不关注顺序

入门案例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Axios入门案例</title>
	</head>
	<body>
		
		<h1>Ajax请求练习</h1>
		<!-- 使用步骤:
			1.导入JS函数类库
			2.发起Ajax请求,之后业务处理.
		 -->
		 <script src="../js/axios.js"></script>
		 <script>
			/* axios请求方式
			 
				1.请求类型
				   1. get  执行查询业务
				   2. post 执行form表单提交(登录/新增)
				   3. put  执行修改操作 
				   4. delete 执行删除业务时.
				   
				2. axios语法
				   axios.get("url地址信息","参数信息")
						.then(function(args){
							
						})
						
				3. 关于args参数说明
					axios为了统筹请求状态.将所有的数据封装为
					promise对象
					
			 */
			
			/* 
			案例1: 利用axios获取后台用户列表信息
			url: http://localhost:8090/findAll 
			
			*/
			
			axios.get("http://localhost:8090/findAll")
				 .then(function(promise){
					 console.log(promise)
					 console.log(promise.data)
				 })
		 
		 </script>
	</body>
</html>
  • 需要注意的是在使用ajax的时候,需要开启跨域机制,否则访问失败------也就是说需要在对应的控制层加上一个注解(@CrossOrigin)

使用Ajax发起的请求说明


分组:
1.GET/DELETE 用法一致.
2.POST/PUT 用法一致.

get请求

GET-带参数(方式1)
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>前后端调用</title>
	</head>
	<body>
		
		 <h1>前后端调用</h1>
		 <script src="../js/axios.js"></script>
		 <script>
			/* 需求1: 查询id=1的用户
			   
			   GET方式1: 动态拼接参数的写法 
			   url: http://localhost:8090/axios/getUserById?id=1
			 */
			let url1 = "http://localhost:8090/axios/getUserById?id=1"
			axios.get(url1).then(promise => {
				console.log(promise.data)
			})
		 </script>
	</body>
</html>
GET-带参数(restFul格式)
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>前后端调用</title>
	</head>
	<body>
		
		 <h1>前后端调用</h1>
		 <script src="../js/axios.js"></script>
		 <script>
			/* 
				GET方式2: 利用restFul查询数据
				需求:     查询sex=女 age>18
				
				原因: restFul结构越来越受欢迎,则拼接restFul结构 变得繁琐.
				模板字符串:  
					语法: 一对反引号  ``
					取值: ${key} 形式取值
					优势: 保留代码的格式
					
			 */
			let sex2 = "女"
			let age2 = 18
			//let url2 = "http://localhost:8090/axios/user/"+sex2+"/"+age2
			let url2 = `http://localhost:8090/axios/user/${sex2}/${age2}`
			axios.get(url2).then(promise => {
				console.log(promise.data)
			})
		 </script>
	</body>
</html>
GET-带参数(对象写法)
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>前后端调用</title>
	</head>
	<body>
		
		 <h1>前后端调用</h1>
		 <script src="../js/axios.js"></script>
		 <script>
			/**
			 * GET方式3: 利用对象实现参数传递
			 * 需求3: 查询 name="王昭君" sex=女 age=19
			 * 参数语法:
			 * 	 数据结构: {}
			 * 	 关键字key(固定写法): params 
			 *   value: 用户需要传递的值
			 */
			let user = {
				name: '王昭君', 
				sex: '女',
				age: 19
			}
			
			let url3 = "http://localhost:8090/axios/getUser"
			axios.get(url3,{params : user})
			     .then(promise => {
					 console.log(promise.data)
				 })
		 </script>
	</body>
</html>

delete请求

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>DELETE请求</title>
	</head>
	<body>
		 <h1>前后端调用-DELETE请求测试</h1>
		 <script src="../js/axios.js"></script>
		 <script>
		 
			/* DELETE测试1:
			   需求: 删除ID=232的数据
			 */
			let url = "http://localhost:8090/axios/deleteById?id=232"
			axios.delete(url)
				 .then( promise => {
					 console.log(promise.data)
				 })
			
		 </script>
	</body>
</html>

post请求

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>POST请求</title>
	</head>
	<body>
		 <h1>前后端调用-POST请求测试</h1>
		 <script src="../js/axios.js"></script>
		 <script>
			
			/**
			 * 需求: 实现用户新增操作
			 * 语法: axios.post(url,新增参数)
			 * 规则: 如果post/put 传递对象则直接赋值.
			 */
			let user = {
				name: '小燕子',
				age: 18,
				sex: '女'
			}
			let url = "http://localhost:8090/saveUser"
			axios.post(url,user)
			     .then(promise => {
					 console.log(promise.data)
				 })
		 </script>
	</body>
</html>

put请求

put请求1
/**
			 * 需求: 要求将id="238" 
			 * 	     改为name="小鬼当家",age=4,sex=男
			 */
			let user = {
				id: 238,
				name: "小鬼当家",
				age: 4,
				sex: "男"
			}
			let url = "http://localhost:8090/axios/updateUser"
			axios.put(url,user)
				 .then(promise => {
					 console.log(promise.data)
				 })

put请求二
/**
			 * 需求2: 要求将name="小燕子"
			 * 	      改为name="小鬼当家",age=18,sex=男
			 * 难点:  如果有多个参数,并且重复时 如何封装?
			 * 解决方案: 1.restFul + 对象 
			 */
			let name = "小燕子"
			let user2 = {
				name: "小鬼当家",
				age: 18,
				sex: "男"
			}
			
			let url2 = `http://localhost:8090/axios/updateUserByName/${name}`
			axios.put(url2,user2)
				 .then(promise => {
					 console.log( promise.data)
				 })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值