Vue中Ajax请求

前端页面上的数据,大部分都不会是静态的,而是来自于服务器,正是因为这样,所以前端也变得强大起来,那么在Vue中怎么使用Ajax请求呢?

Vue本身不支持ajax请求,需要使用“axios”的第三方插件(2.0),axios是基于promise的http请求客户端,用来发送请求,是Vue2.0推荐使用的,同时不再对vue-resource进行更新和维护。也可以使用vue-resource进行跨域请求。

axios的安装和使用

安装:

通过npm安装和直接引用其js文件;

基本使用:

       a).可以在methods中定义一个方法来调用axios()方法;
       b).使用axios([options])方法,axios([options]).then(function(respon){}).catch(function(error){}),在这里.then就是成功后要做的事情,responce就是成功后 返回的对象(数据就在这个对象里),catch就是失败的时候要做的事情,error就是错误后返回的错误信息对象
           c).使用axios.get(url[,options])方法;
                    get传参方式:
                          1.直接拼接在url后面(不建议);
                          2.在params的选项传参(options中的一个选项params,是一个对象)
            d).使用axios.post(url,data,[options])方法;
                      axios在进行post请求的时候,数据格式是request payload,并不是我们常用的Form data格式(表单数据格式),参数必须要以"键值对"的形式传递,而不能以json形式传参(也就是说这里的data的格式是一个由键值对组成的字符串)。

传参方式:
                              1.自己手动拼接键值对字符串;
                              2.通过transformRequest,在请求发送前进行请求数据的转换(还得自己转换,github上有):axios.post(url,jsonData,{
                                  transformRequest:[
                                        function(data){
                                            <!-- 这里的data就是前面的jsonData -->
                                            在这里进行手动拼接成“键值对”字符串,并返回
                                        }
                                  ]
                                }[options])
                            3.如果使用模块化开发,可以使用qs模块进行数据的转化;

需要注意的是: axios本身并不支持跨域请求,也没有提供相应的API,所以暂时只能使用第三方库,来进行跨域(目前这种方法还有瑕疵);

使用vue-resource进行跨域请求

vue-resource的安装:

npm 安装或者直接下载并引用其源文件

vue-resource基本用法:

在方法中使用this.$http去发送跨域请求:例如this.$http.get(url[,options]),this.$http.post(url,[body],[options])...等等;
这里的options要参考github上的写法,还有就是.then(function(responce){...},function(error){...})基于promise来处理成功和失败的回调函数。
总而言之,所有请求中的options都是一个对象

看一个实例吧:

HTML部分

<label>搜索:</label>
		<input type="text" name="搜索百科" v-model = "searchW">
		<button @click="getNewsList">立即搜索</button>
JS部分

var app = new Vue({
			el:"#container",
			data:{
				greeting:"hello,world!",
				searchData:[],
				searchW:"",
				searchI:""
			},
			methods:{
				// vue-resoure
				getNewsList:function(){
					this.$http.jsonp("http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_length=600",{
						params:{
							bk_key:this.searchW//双向绑定,参数
						}
					}).then(function(responce){
							console.log(responce)
							this.searchData = responce.body.result
					},function(err){
						console.log("请求失败!")
					})
				}
			}
		})







Vue 3中,实现AJAX请求有多种方法,常见的是使用`axios`库。以下是使用`axios`在Vue 3中进行AJAX请求的详细介绍。 ### 安装`axios` 首先,需要在项目中安装`axios`,可以使用npm或者yarn进行安装: ```bash npm install axios # 或者 yarn add axios ``` ### 基本使用示例 以下是一个在Vue 3的组合式API中使用`axios`进行GET和POST请求的示例: ```vue <template> <div> <button @click="fetchData">发送GET请求</button> <button @click="postData">发送POST请求</button> <div v-if="responseData">{{ responseData }}</div> </div> </template> <script setup> import { ref } from 'vue'; import axios from 'axios'; const responseData = ref(null); const fetchData = async () => { try { const response = await axios.get('https://jsonplaceholder.typicode.com/todos/1'); responseData.value = response.data; } catch (error) { console.error('发生异常:', error.message); } }; const postData = async () => { try { const response = await axios.post('https://jsonplaceholder.typicode.com/posts', { title: 'foo', body: 'bar', userId: 1 }); responseData.value = response.data; } catch (error) { console.error('发生异常:', error.message); } }; </script> ``` 在上述代码中: - 引入了`axios`库和Vue 3的`ref`函数。 - `fetchData`函数使用`axios.get`方法发送一个GET请求请求`https://jsonplaceholder.typicode.com/todos/1`这个URL。 - `postData`函数使用`axios.post`方法发送一个POST请求请求`https://jsonplaceholder.typicode.com/posts`这个URL,并传递了一个包含`title`、`body`和`userId`的对象作为请求数据。 - 使用`try...catch`块来捕获请求过程中可能出现的异常。 ### 配置请求 `axios`还支持配置请求的各种参数,如请求头、超时时间等,示例如下: ```javascript axios({ url: 'https://jsonplaceholder.typicode.com/todos/1', method: 'GET', headers: { 'Content-Type': 'application/json' }, timeout: 5000 }) .then(response => { console.log('返回的数据', response.data); }) .catch(error => { console.log('发生异常:' + error.message); }); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值