VUE使用插件实现发送ajax
</!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>