本文正在参加「金石计划 . 瓜分6万现金大奖」
学习axios之前,先了解一个别的名词就是ajax,
ajax的全称Asynchronous JavaScript and XML ,也就是异步加载的javascript 和 XML。
ajax主要是用来实现页面和服务器之间的数据传输。
Vue本身是不支持发送ajax请求的,需要使用第三方插件,而axios就是Vue2.0官方推荐的一个插件。
axios的作用:用来发送ajax请求的小插件,它是对ajax的封装。
1.promise对象
Axios是基于Promise的HTTP库,那么什么是Promise呢?其实简单理解就是一个容器,里面保存着某个未来才会结束的事件,代表着异步操作。Promise有三种状态,pending(进行中)、fulfilled(已成功)、rejected(已失败)。
function ajax(URL) {
return new Promise(function (resolve, reject) {
var req = new XMLHttpRequest();
req.open('GET', URL, true);
req.onload = function () {
if (req.status === 200) {
resolve(req.responseText);
} else {
reject(new Error(req.statusText));
}
};
req.onerror = function () {
reject(new Error(req.statusText));
};
req.send();
});
}
var URL = "/try/ajax/testpromise.php";
ajax(URL).then(function onFulfilled(value){
document.write('内容是:' + value);
}).catch(function onRejected(error){
document.write('错误:' + error);
});
通过Promise对象的then方法可以接收异步操作成功的回调函数;通过catch捕获异常,可以接收异步操作失败的回调函数。 其中,resolve在异步操作成功时操作,并将异步操作的结果作为参数传递出去;reject在异步操作失败时调用,并将异步操作报出的错误作为参数传递出去。
2.使用axios发送ajax请求
axios基本语法
(1)axios([options])
该方法既可以发送get请求,也可以发送post请求。options为axios方法的参数,有三个参数,method表示请求的方式类型,url表示请求的地址,responseType表示后端返回的数据类型,可以不指定。
methods:{
send:function(){
axios({
method:'get',
url:''
})
.then(function(resp){
console.log(resp);
}).catch(err=>{
console.log('请求失败');
})
}
}
(2)axios.get(yrl,[options])
methods:{
sendGet(){
axios.get('请求地址')
.then(resp=>{
console.log(resp.data)
})
.catch(err=>{
console.log("请求失败")
})
}
}
get方法传参有两种方式,第一种就像上面代码中的直接放在url后面,也可以通过params选项传递参数。
axios.get('url',{
params:{
name:'yu',
age:25
}
})
(3)axios.post(url,[,data[,config]])
第一个参数为请求处理的服务器端程序,第二个参数为数据,第三个参数为选项可以不写
methods:{
sendpost(){
axios.post('url',{
name:'yu',
age:25
})
.then(resp=>{
console.log(resp.data)
})
.catch(err=>{
console.log("请求失败")
})
}
}
3.优点:
(1)对象的状态不受外界影响,promise对象的三种状态。只有异步操作的结果。可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。
(2)一旦状态改变,就不会再改变,任何时候都可以得到这个结果。他的状态改变只有两种可能从pending变成resolved和从pending变成rejected。只要这两种情况发生。状态就凝固了,不会再变了,会一直保持这个结果。