Axios----web数据交互方式

2023-11-03

一、VUE生命周期

Created--->Vue: 对象创建完成触发的函数

二、缩写

v-bind---给属性赋值,缩写为 :

v-on---事件绑定,缩写为@

缩写:

 三、计算属性

computed中定义,以匿名函数形式实现数据的操作(计算),返回的值为计算的结果

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<h2></h2>
			<button @click="addrow()">添加</button>

			<p v-for="(s,i) in list">
				名称: <input v-model="s.sname" placeholder="输入商品名称" />
				价格: <input v-model="s.sprice" />
				数量: <input v-model="s.snum" />
				小计: <input v-model="s.smoney" readonly="readonly" />
				
			</p>
			
		</div>
	</body>
	<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		var vm = new Vue({
			el: "#app",
			data: {
				list: [],
			},
			methods: {
				
			},
			computed: {
				//计算属性
				/* smoney: function(){
				 return this.sprice*this.snum;
				} */
			}
		})
	</script>
</html>

 四、统计购物车信息

总价格、总数量、添加和删除

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<h2></h2>
			<button @click="addrow()">添加</button>

			<p v-for="(s,i) in list">
				名称: <input v-model="s.sname" placeholder="输入商品名称" />
				价格: <input v-model="s.sprice" />
				数量: <input v-model="s.snum" />
				小计: <input :value="s.sprice*s.snum" readonly="readonly" />
				<button @click="delrow(i)">删除</button>
			</p>
			总计: {{total}}¥ 共: {{count}}件
		</div>
	</body>
	<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		var vm = new Vue({
			el: "#app",
			data: {
				list: [],
			},
			methods: {
				//增加方法
				addrow: function() {
					/* 添加一个对象 */
					this.list.push({
						sprice: 0,
						snum: 1
					})
				},
				//删除方法
				delrow(i) {
					this.list.splice(i, 1)
				},
			},
			computed: {
				//计算属性
				/* smoney: function(){
				 return this.sprice*this.snum;
				} */
				total() {
					var sum = 0;
					this.list.forEach(function(v, i) {
						sum += v.sprice * v.snum
					})
					return sum;
				},
				count() {
					var sum = 0;
					this.list.forEach(function(v,i) {
						sum += v.snum * 1;
					})
					return sum;
				}
			}
		})
	</script>
</html>

五、观察者---监听机制----实现复选框全选操作

监听数据的变化,从而执行的功能

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<input v-model="sprice" />
			<hr >
			<!-- 复选框全选 绑定单个值真和假 -->
			<!-- 全选把数组内容交给爱好 -->
			<input type="checkbox" v-model="qx" />全选
			<p v-for="h in list">
				<!-- 绑定数组 数据绑定-->
				<input type="checkbox" v-model="hobby" :value="h" />{{h}}
			</p>
			{{hobby}}
		</div>
	</body>
	<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		var vm = new Vue({
			el: "#app",
			data: {
				sprice: 0,
				list: [
					'游戏',
					'音乐',
					'书籍',
				],
				//默认不选
				qx: false,
				hobby: [],
			},
			watch: {
				//观察谁写谁
				sprice(newval,oldval){
					//观察者监听模式
					console.log(newval,oldval)
				},
				qx(newval){
					//全选
					if(newval){
						this.hobby=this.list
					}else{ //全不选
						this.hobby=[]
					}
				}
			}
		})
	</script>
</html>

六、axios实现ajax

跨越问题:ajax请求不同源---ip地址、端口、项目路径,不允许处理ajax请求

No 'Access-Control-Allow-Origin' header

原理:response设置安全的响应头

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

    response.setCharacterEncoding("utf-8");
    response.setContentType("text/json;charset=utf-8");
    /** 设置响应头允许ajax跨域访问 **/
    HttpServletResponse rp=(HttpServletResponse)response;
    HttpServletRequest req=(HttpServletRequest) request;
rp.setCharacterEncoding("utf-8");
    rp.setContentType("text/json;charset=utf-8");
    req.setCharacterEncoding("utf-8");
    String origin="*";
    if(req.getHeader("Origin")!=null){
    origin=req.getHeader("Origin");
    }
    rp.setHeader("Access-Control-Allow-Origin", origin);
rp.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
rp.setHeader("Access-Control-Max-Age", "3600");
rp.setHeader("Access-Control-Allow-Headers", "x-requested-with, Content-Type, token");
rp.setHeader("Access-Control-Allow-Credentials", "true");
chain.doFilter(request, rp);

}

sprintboot解决方案:

(1)实现跨域过滤器

在项目的主程序中增加以下代码:

    @Bean
    public CorsFilter corsFilter() {
        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        final CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true); // 允许cookies跨域
        config.addAllowedOrigin("*");// 允许向该服务器提交请求的URI,*表示全部允许。。这里尽量限制来源域,比如http://xxxx:8080 ,以降低安全风险。。
        config.addAllowedHeader("*");// 允许访问的头信息,*表示全部
        config.setMaxAge(18000L);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
        config.addAllowedMethod("*");// 允许提交请求的方法,*表示全部允许,也可以单独设置GET、PUT等
//        config.addAllowedMethod("HEAD");
//        config.addAllowedMethod("GET");// 允许Get的请求方法
//        config.addAllowedMethod("PUT");
//        config.addAllowedMethod("POST");
//        config.addAllowedMethod("DELETE");
//        config.addAllowedMethod("PATCH");
        source.registerCorsConfiguration("/**", config);
        System.out.println("----------跨域处理------------");
        return new CorsFilter(source);
    }

(2)实现跨域拦截器

新建CrossInterceptor

@Configuration
public class CrossInterceptor implements WebMvcConfigurer {
    //允许跨域请求
    public void addCorsMappings(CorsRegistry registry) {
        System.out.println("......跨域执行......");
        registry.addMapping("/**")
                .allowedHeaders("*")
                .allowedOrigins("*")
                .allowedMethods("GET","POST","PUT","OPTIONS")
                .allowCredentials(true)
                .maxAge(5000);
    }
}

七、axios多种参数传递方式

1、接收axios传递的json数据,必须加@RequestBody,单值无法接收

html:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script src="js/axios.min.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			axios.post("http://localhost:9090/admin/insert",{aid:4,aname:4,apwd:4}).then(function(res){
				if(res.data=="1"){
					console.log("ok")
				}else{
					console.log("fail")
				}
			}) 
		</script>
	</body>
</html>

controller

@RequestMapping("/insert")
    //json转换
    public String insert(@RequestBody Admin a){
        try {
            System.out.println(a);
            as.save(a);
            return "1";
        } catch (Exception e){
            e.printStackTrace();
        }
        return "0";
    }

2、单值传递-----实现删除操作

html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script src="js/axios.min.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			
			 axios.post("http://localhost:9090/admin/delete","aid=4").then(function(res){
				if(res.data=="1"){
					console.log("ok")
				}else{
					console.log("fail")
				}
			}) 
			
			
		</script>
	</body>
</html>

controller

 @RequestMapping("/delete")
    //单值获取
    public String delete(String aid){
        try {
            System.out.println(aid);
            as.removeById(aid);
            return "1";
        } catch (Exception e){
            e.printStackTrace();
        }
        return "0";
    }

3、URLSearchParams方式传递单值和多值

html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script src="js/axios.min.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			
			//URLSearchParams方式传参,不传json
			/* var param = new URLSearchParams();
			param.append("aid","1");
			param.append("aname","任柏熙");
			axios.post("http://localhost:9090/admin/selectOne",param).then(function(res){
				console.log(res.data);
			}) */
			
			//批量删除
		    var param = new URLSearchParams();
			param.append("aid",['5','6']);
		
			axios.post("http://localhost:9090/admin/deleteList",param).then(function(res){
				console.log(res.data);
			})
		</script>
	</body>
</html>

controller

@RequestMapping("/selectOne")
public Admin selectOne(String aid){
    return as.getById(aid);
}
@RequestMapping("/deleteList")
//批量删除
public String deleteList(String[] aid){
    try {
        as.removeByIds(Arrays.asList(aid));
        return "1";
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "0";
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Axios----web数据交互方式 的相关文章

随机推荐

  • 配置NTP时间客户端

    NTP Network Time Protocol 是将计算机预指定服务器时间保持一致的服务 也就是让计算机时间同步的工具 前导知识 1 配置NTP服务前需要安装软件包chrony 2 NTP的系统服务 chronyd 3 NTP客户端配置
  • 构件与中间件技术

    文章目录 一 软件构件与中间构件 1 分布式软件的基本概念 2 软件构件的基本概念 3 中间件的基本概念 4 互操作的基本原理和实例 二 CORBA基本原理 1 对象管理体系结构 2 ORB结构 3 CORBA的优点和缺点 三 基于CORB
  • 【微信小程序】swiper的使用

    1 swiper的基本使用
  • error mysql提示SQLyog连接本地sql显示Can‘t connect to Mysql server on‘localhos‘

    在管理工具 服务 mysql 启动
  • 【计算机视觉】三种常用的分割数据集:室内场景(ADE20K)、室外场景(Cityscapes)和驾驶场景(BDD100K)

    文章目录 一 室内场景 ADE20K 1 1 背景介绍 1 2 数据集的介绍 二 驾驶场景 BDD100K 三 室外场景 Cityscapes 一 室内场景 ADE20K 1 1 背景介绍 ADE20K 数据集是 2016 年 MIT 开放
  • 使用VMware Workstation操作Linux系统提示Intel VT-x处于禁用状态

    问题 此主机支持Intel VT x 但Intel VT x处于禁用状态 以前没遇到过 其实跟我最近改过笔记本的bios有关 本机为联想拯救者笔记本 解决办法 1 进入bios显示如下 2 选择 Configuration 再选择 Inte
  • ubuntu下c++编译链接caffe的工程

    最近在做深度网络相关的项目 我们通常可以从github上download很多相关的源码 但是在我们的机子上编译的时候通常会遇到很多问题 将我最近踩的坑做了一些总结 希望对大家有所帮助 1 如果直接g cpp 出现下面或者是出现某种语法错误之
  • 五、多(一)对一和一对多查询

    1 查询所有账户 同时查询出账户所属的用户 包含用户的用户名和地址信息 实体类 public class User implements Serializable private Integer id private String user
  • 第3章(下)基于Softmax回归完成鸢尾花分类任务

    文章目录 3 3 实践 基于Softmax回归完成鸢尾花分类任务 3 3 1 数据处理 3 3 1 1 数据集介绍 3 3 1 2 数据清洗 3 3 1 3 数据读取 3 3 2 模型构建 3 3 3 模型训练 3 3 4 模型评价 3 3
  • 用c语言写一个自动售货机

    自动售货机 如图所示的简易自动售货机 物品架1 2上共有10样商品 按顺序进行编号 分别为1 10 同时标有价格与名称 一个编号对应一个可操作按钮 供选择商品使用 如果物架上的商品被用户买走 储物柜中会自动取出商品送到物架上 保证物品架上一
  • Oracle数据库还原数据基础知识

    还原数据在用户修改数据内容时创建 保存修改前的值 还原数据至少会保留到事务结束 便于rollback时使用 还原数据保证读取一致性 还原数据可用于闪回查询 查找过去某个时间点的数据 用于闪回表 将表恢复到特定时间点 还原表空间自动进行管理
  • Mybatis构建sql语法

    构建sql 之前通过注解开发时 相关 SQL 语句都是自己直接拼写的 一些关键字写起来比较麻烦 而且容易出错 MyBatis 给我们提供了 org apache ibatis jdbc SQL 功能类 专门用于构建 SQL 语句 常用方法
  • Mssql注入——dns注入,反弹注入

    DNS注入 DNS注入原理 通过子查询 将内容拼接到域名内 让load file 去访问共享文件 访问的域名被记录此时变为显错注入 将盲注变显错注入 读取远程共享文件 通过拼接出函数做查询 拼接到域名中 访问时将访问服务器 记录后查看日志
  • 新生代接口测试神器ApiFox总结,你真的会用吗?

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • linux启动生成文件,Linux重新生成启动引导文件

    1 重新生成grub2的配置文件 grub mkconfig o boot grub grub cfg 2 将grub2安装到硬盘引导扇区 grub install root directory dev sda 3 使用密码保护grub2
  • Unicode编码详解

    Unicode定义 Unicode 统一码 万国码 单一码 是计算机科学领域里的一项业界标准 包括字符集 编码方案等 Unicode 是为了解决传统的字符编码方案的局限而产生的 它为每种语言中的每个字符设定了统一并且唯一的二进制编码 以满足
  • Java svg图片转png图片

    Java svg图片转png图片 比较简单 主要使用batik包里的batik transcoder模块 网上的教程引的包太多了 只是转化的话 这个包就够了 你们引用的时候 记得查一下version 之前我引用的包太老了 项目就起不来了 p
  • Windows下端口号被占用排查方法

    1 WIN R CMD进入命令行 本示例端口号为8081 实操根据自己的端口号来 查找哪个进程号 PID 占用了本端口号 netstat ano findstr 8081 通过PID查到对应占用程序 tasklist findstr 142
  • IP:网际协议

    本文是为了记录学习过程中的知识点所写 用于对自己的理解做一个记录 4位版本 目前的版本号为4 因此IP也称为IPv4 4位首部长度 首部占32bit 4字节 的数目 4bit最大值为15 也就是说最多为480bit 即60字节 包括选项 也
  • Axios----web数据交互方式

    一 VUE生命周期 Created gt Vue 对象创建完成触发的函数 二 缩写 v bind 给属性赋值 缩写为 v on 事件绑定 缩写为 缩写 三 计算属性 computed中定义 以匿名函数形式实现数据的操作 计算 返回的值为计算