</!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<script src="./lib/vue-2.4.0.js"></script>
<script src="./lib/axios.min.js"></script>
<script src="./lib/vue-resource-1.3.4.js"></script>
<style>
</style>
</head>
<body>
<!--
vuejs本身是不支持发送ajax的,需要使用插件来实现
vue-resource、axios插件
axios的形式是一个基于Promise的HTTP请求客户端,用来发出请求,该形式是vue2.0官方推荐的形式,官方在推出了该形式后,同时就不再对之前的vue-resource的形式进行更新和维护了。所以更推荐的是使用axios的形式来处理ajax请求
-->
<div id="app">
<p id="msg">{{str1}}</p>
请输入信息:<input type="text" v-model="str1">
<br>
<br>
<button @click="getStudent">点击获取学生信息</button>
<br>
<br>
编号:<span>{{id}}</span>
<br>
姓名:<span>{{name}}</span>
<br>
年龄:<span>{{age}}</span>
</div>
<script>
var vm = new Vue({
el:"#app",
data:{
str1:"aaa",
id:"",
name:"",
age:"",
},
methods:{
//1.vue-resource插件实现get和post请求
getStudent(){
//发出ajax请求获取学生信息,在页面中局部刷新学生信息
// this.$http.get("请求路径",请求参数,then(回调函数));
//对于参数的传递,get请求和post请求的参数传递的语法是不同的,这一点有别于其他的前端语言
//对于get请求,必须是再路径的后买你拼接url?key1=value1&key2=value2
this.$http.get("getStudent?name=张三").then(function(data){
//通过data.body的形式拿到服务器返回成功的数据
console.log(data.body.id);
this.id=data.body.id;
this.name=data.body.name;
this.age=data.body.age;
});
//post请求参数传递的方式,是以请求体的方式来传递的,所以不能将参数挂在url后面
//手动发起的post请求,默认没有表单格式,所以有些服务器就处理不了
//我们需要通过post方法的第三个参数,{emulateJSON:true}设置,提交的内容类型就设置为了普通表单的格式传递参数
this.$http.post("updateStudent",{"name":"李四"},{emulateJSON:true}).then(function(data){
//通过data.body的形式拿到服务器返回成功的数据
console.log(data.body.id);
this.id=data.body.id;
this.name=data.body.name;
this.age=data.body.age;
});
},
//2.通过axios插件实现get和post请求
getStudentAxios(){
//在请求执行成功过以后,执行回调函数中的内容,回调函数处于其他函数的内部。this不会与任何的对象绑定(以this.id的形式拿不到data中定义的值了)
//将指向vue对象的this赋值给外部方法定义的属性,然后在北部方法中使用该属即可
var _this=this;
axios({
method:"get",
url:"getStudent"
}).then(function(result){
//axios对于返回值的处理,返回值.data进行取值
console.log(result);
var data = result.data;
_this.id=data.id;
_this.name=data.name;
_this.age=data.age;
});
//如果不给this进行赋值,可以通过箭头表达式替代原有的function做回调函数
axios({
method:"get",
//可以通过拼接的方式传递参数
url:"getStudent?name=张三",
//也可以通过param属性的形式来传递参数,post也可以通过这种方式传递参数
params:{"name","张三"}
}).then(result=>{
//axios对于返回值的处理,返回值.data进行取值
console.log(result);
var data = result.data;
this.id=data.id;
this.name=data.name;
this.age=data.age;
});
//axios的另一种发送请求的形式
axios.get(
"getStudent",//请求路径
//请求参数
{
params:{
"name":"张三"
}
}
).then(result=>{
var data = result.data;
this.id=data.id;
this.name=data.name;
this.age=data.age;
});
axios.post(
"getStudent",//请求路径
//请求参数,该方法发送数据是一个request payload的数据格式,一般的数据格式都是form data格式,所以我们之前写的以json形式的参数就发送不出去
//只能通过传统字符串的方式向后台发送参数
"name=abc"
).then(result=>{
var data = result.data;
this.id=data.id;
this.name=data.name;
this.age=data.age;
})
}
},
})
</script>
</body>
</html>