①vuejs中沒有內置任何ajax請求方法php
②在vue1.0版本,使用的插件 vue resource 來發送請求,支持promisevue
③在vue2.0版本,使用社區的一個第三方庫 axios ,也支持promisenode
④在HTML5時代,瀏覽器增長了一個特殊的異步請求方法 fetch,原生支持promise,因爲兼容性問題,通常用於移動端jquery
⑤還有的項目會使用vue和jquery混用,藉助jQuery的ajax方法ios
①安裝和引入:git
npm install axios
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
②發送get請求github
axios([options]) #這種格式直接將全部數據寫在options裏,options實際上是個字典
axios.get(url[,options]);
<div id="app"> <button @click='send'>發送Ajax請求</button> <button @click='sendGet'>GET方式發送Ajax請求</button> </div> <script src="node_modules/vue/dist/vue.js"></script> <script src="node_modules/axios/dist/axios.min.js"></script> <script> new Vue({ el:'#app', data:{ user:{name:'eric',age:24}, }, methods:{ send(){ axios({ method:'get', url:'http://www.baidu.com?name=jack&age=30' }).then(function(resp){ console.log(resp.data); }).catch(err=>{ console.log('請求失敗:'+err.status+','+err.statusText); }); }, sendGet(){ axios.get('server.php',{ params:{name:'tom',age:20} }).then(resp=>{ console.log(resp.data) }).catch(resp=>{ console.log('請求失敗:'+err.status+','+err.statusText); }); }, }, }); </script>
③發送post請求(push,delete的非get方式的請求都同樣)ajax
axios.post(url,data,[options]);
<div id="app"> <button @click='sendPost'>post方式發送Ajax請求</button> </div> <script src="node_modules/vue/dist/vue.js"></script> <script src="node_modules/axios/dist/axios.min.js"></script> <script> new Vue({ el:'#app', data:{ user:{name:'eric',age:24}, }, methods:{ sendPost(){ axios.post('server.php',this.user,{ transformRequest:[ function(data){ let params=''; for(let index in data){ params+=index+'='+data[index]+'&'; } return params; } ] }).then(resp=>{ console.log(resp.data) }).catch(err=>{ console.log('請求失敗:'+err.status+','+err.statusText); }); }, }, }); </script>
④發送跨域請求:axios自己並不支持發送跨域的請求,沒有提供相應的API,做者也暫沒計劃在axios添加支持發送跨域請求,因此只能使用第三方庫,可使用vue-resource發送跨域請求npm