【Vue】Vue中的Ajax——axios组件详解

news/2024/7/10 2:13:02 标签: vue, ajax, http, javascript
http://www.w3.org/2000/svg" style="display: none;">

axios简介

Vue并不能直接支持ajax,所以通过组件来实现ajax异步请求。

最为推荐的组件就是 axios。

在进行下面的学习之前,先把这个组件安装到本地:

npm install axios

 
 

请求

javascript">axios这样发出请求:
	axios(config)
	axios.get(url[, config])
	axios.post(url[, data[, config]])
	axios.put(url[, data[, config]])
	axios.delete(url[, config])
	axios.head(url[, config])
	axios.patch(url[, data[, config]])
说明:
	1.只有url是必须的
	2.axios方法默认的是get请求

关于config配置:
{
	// 请求服务器资源
	url: '/user/findAll',

	// 请求方式
	method: 'get',

	// 与url进行自动拼接
	baseURL: 'https://samarua/',

	// 在请求真正发出之前,对请求数据进行处理
	transformRequest: [function (data) { 
		return data;
	}],
	
	// 在响应真正被接收之前,对响应数据进行处理
	transformResponse: [function (data) {
		return data;
	}],

	// 自定义请求头
	headers: {
		'X-Requested-With': 'XMLHttpRequest',
		'Content-Type': 'application/json'
	},

	// 与请求一起发送的参数
	param: {
		name: Alice,
		age: 12
	},
	
	// 作为请求主体被发送的数据
	data: {
	}

	// 超时时间,超时后请求中断
	timeout: 1000,

	// 跨域请求是否需要凭证
	withCredentials: false,

	// 服务器响应的数据类型
	responseType: 'json',

	// 允许响应内容的最大尺寸
	maxContentLength: 2000,

	// 根据响应状态码定义promise的类型
	validateStatus: function (status) {
		return status >= 200 && status < 300;
	},

	// 最大重定向数目
	maxRedirects: 5
}

 
 

响应

javascript">{
	data: {},				// 响应内容(最最最重要)
	status: 200,			// HTTP响应状态码
	statusText: 'OK',		// HTTP响应状态请求
	headers: {},			// 响应头
	config: {}				// 为请求提供配置信息
}

 
 

使用示例

假设有一个data.json静态资源

[
  {"name": "Alice", "age": 12},
  {"name": "Hana", "age": 11},
  {"name": "Mana", "age": 11}
]

使用axios方法:

<div id="app">
    <ul>
        <li v-for="loli in lolis">
            {{loli.name}} 的年龄是 {{loli.age}} ~
        </li>
    </ul>
</div>
<script type="text/javascript">javascript">
    var app = new Vue({
        el: "#app",
        data: {
            lolis: []
        },
        created() {
            // 生命周期函数,这里使用ajax的返回值初始化数据
            // 注意下面ajax请求与响应的写法
            axios({
                url: "data.json",
                method: "get"
            }).then(res => {
                app.lolis = res.data;
            }).catch(err => {
                alert(err);
            });
        }
    });
</script>

使用axios.get/post方法:

<div id="app">
    <ul>
        <li v-for="loli in lolis">
            {{loli.name}} 的年龄是 {{loli.age}} ~
        </li>
    </ul>
</div>
<script type="text/javascript">javascript">
    var app = new Vue({
        el: "#app",
        data: {
            lolis: []
        },
        created() {
            // axios.get("data.json").then(res => {
            axios.post("data.json").then(res => {
                app.lolis = res.data;
            }).catch(err => {
                alert(err);
            });
        }
    });
</script>

说明:

❶ 实际应用中,请求的不是静态资源,而是服务器上的动态资源(返回的也是json)。

❷ 在IDEA中,按住Shift单击右上角浏览器图标,则以 file 协议访问(file:///Users/samarua/IdeaProjects/vueDemo/demo.html);直接单击右上角浏览器图标,则以 http 协议访问(http://localhost:63342/vueDemo/demo.html)。

❸ 发出请求的主机/端口号,与服务器的主机/端口号不同时,很可能出现 前端跨域问题

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

❤️


http://www.niftyadmin.cn/n/1329992.html

相关文章

Object类、常用API(二)

java.util.Calendar是日历类&#xff0c;在Date后出现&#xff0c;替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量&#xff0c;方便获取。日历类就是方便获取各个时间属性的。 Calendar为抽象类&#xff0c;由于语言敏感性&#xff0c;Calendar类在创…

【LeetCode】Sama的个人记录_56

不要想的太复杂。自定义一个排序器即可&#xff1a; Arrays.sort(strings, (o1, o2) -> (o2 o1).compareTo(o1 o2)); 说明&#xff1a; 1. 这里的排序器的特殊之处在于&#xff0c;不是比较两个独立的元素&#xff0c;而是比较两个元素的组成结果———但这是可行的。 2. …

Collection、泛型

* 数组的长度是固定的。集合的长度是可变的。 * 数组中存储的是同一类型的元素&#xff0c;可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候&#xff0c;使用集合进行存储。 JAVASE提供了满足各种需求的API&#xff0c;在使…

list、set

常见的数据结构数据存储的常用结构有&#xff1a;栈、队列、数组、链表和红黑树。我们分别来了解一下&#xff1a;#### 栈* **栈**&#xff1a;**stack**,又称堆栈&#xff0c;它是运算受限的线性表&#xff0c;其限制是仅允许在标的一端进行插入和删除操作&#xff0c;不允许在…

【Node.js】一篇文章带你彻底理解Node.js及其特性

什么是Node.js 简单的说&#xff0c;Node.js就是运行在服务端的JavaScript&#xff0c;它打破了JavaScript只能在浏览器运行的局面&#xff0c;并且让JavaScript的生态建设走向正轨。 Node.js最初的开发者&#xff0c;是想要写一个基于事件驱动的、非阻塞I/O的Web服务器&…

【Node.js】一篇文章带你直接上手JavaScript服务端编程

你需要先学习的 1&#xff09;什么是Node.js&#xff1f;&#xff08;戳这里&#xff1a;《【Node.js】一篇文章带你彻底理解Node.js及其特性》&#xff09; 2&#xff09;安装Node.js。&#xff08;node -v如果得到版本号&#xff0c;则安装成功&#xff09; Node.js模块化 …

异常、线程

1.1 异常概念异常&#xff0c;就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是&#xff1a;* **异常** &#xff1a;指的是程序在执行过程中&#xff0c;出现的非正常的情况&#xff0c;最终会导…

线程与同步

。 代码如下&#xff1a; 自定义线程类&#xff1a; public class MyThread extends Thread{ /** 利用继承中的特点 * 将线程名称传递 进行设置 */ public MyThread(String name){ super(name); }/** 重写run方法 * 定义线程要执行的代码 */ public void run(){ for (int i 0;…