1. 程式人生 > >vue $http請求服務

vue $http請求服務

vue中的$http服務  需要引入一個叫vue-resource.js的檔案,因為vue.js中沒有$http服務。如果需要使用這個服務去百度下載vue-resource.js 然後引進專案即可

引入單個vue的時候 可以使用 vue-resource.js的檔案實現互動效果

搭建vue專案的時候,我們一般用 axios

Vue 原本有一個官方推薦的 ajax 外掛 vue-resource,但是自從 Vue 更新到 2.0 之後,官方就不再更新 vue-resource

目前主流的 Vue 專案,都選擇 axios 來完成 ajax 請求,而大型專案都會使用 Vuex 來管理資料

後期會更新 axios以及專案搭建

get方法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="js/vue.js"></script>
		<script src="vue-resource.js"></script>
	</head>
	<body>
		
		<div id="app">
			
			<button @click='get()'>點選</button>
			
			
		</div>
		<script>
			var vm=new Vue({
				el:'#app',
				data:{},
				methods:{
					get:function(){
							//get請求 需要向後臺傳引數 語法:{params:{a:10,b:2}}
							//this.$http.get('get.php',{params:{a:10,b:2}}).then(function(res){}
						this.$http.get('get.php',{params:{a:10,b:2}}).then(function(res){
							console.log(res);
							console.log(res.data);
						},function(res){
							console.log('失敗')
						})
					}
				}
			})
		</script>
	</body>
</html>


get.php檔案:

<?php
$a=$_GET['a'];
$b=$_GET['b'];
echo $a-$b;
?>

get方法有兩個引數get("PHP檔案",“引數”)

post方法:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="js/vue.js"></script>
		<script src="vue-resource.js"></script>
	</head>
	<body>
		
		<div id="app">
			
			<button @click='post()'>點選</button>
			
			
		</div>
		<script>
			var vm=new Vue({
				el:'#app',
				data:{},
				methods:{
					post:function(){
						//post方法有三個引數post("php檔案","引數","emulateJSON:true")
				//emulateJSON:true  模擬一個JSON資料傳送到伺服器,這樣才可以成功執行 
						this.$http.post('post.php',{a:10,b:2},{emulateJSON:true}).then(function(res){
							console.log(res);
							console.log(res.data);
						},function(res){
							console.log('失敗')
						})
					}
				}
			})
		</script>
	</body>
</html>

post.php:

<?php
$a=$_POST['a'];
$b=$_POST['b'];
echo $a+$b;
?>

post方法有三個引數post("php檔案","引數","emulateJSON:true"

  1. emulateJSON:true  模擬一個JSON資料傳送到伺服器,這樣才可以成功執行  

這樣放在伺服器環境下就可以運行了,我用的是phpstudy

=======================================

模擬介面資料---顯示到頁面上

data.json資料

{
	"total":"4",
	"data":[
		{
			"name":"三國演義",
			"category":"文學",
			"desc":"一個軍閥混戰的年代"
		},{
			"name":"水滸傳",
			"category":"文學",
			"desc":"草寇or英雄好漢"
		},{
			"name":"西遊記",
			"category":"文學",
			"desc":"妖魔鬼怪牛鬼蛇神什麼都有"
		},{
			"name":"紅樓夢",
			"category":"文學",
			"desc":"一個封建王朝的縮影"
		}
	],
	"obj":{"adf":"adf"}
}

解析資料  get請求

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="js/vue.js"></script>
		<script src="js/vue-resource.js"></script>
	</head>
	<body>
		
		<div id="app">
			
			<button @click='get()'>點選請求顯示資料</button>
			
			<!--遍歷陣列   資料  -->
			<ul>
				<li v-for='(item,index) in arr'>{{item.name}} {{item.desc}}</li>
			</ul>
			
		
		</div>
		
		<script>
			var vm=new Vue({
				el:'#app',
				data:{
					//宣告變數 存資料   $http 請求的資料
					arr:[],
				},
				methods:{
					get:function(){
						//get 請求資料  沒有傳參  模擬資料json 
						this.$http.get('data.json').then(function(res){
							console.log(res);
							// .data  資料
							console.log(res.data)
							console.log(res.data.data);
							//資料res.data.data  給一個變數
							this.arr=res.data.data;
														
						},function(){
							alert("失敗")
						})
					}
				}
				
			})
			
			
		</script>
	</body>
</html>

顯示頁面效果:


可以練習顯示資料: