adonislu 2020-05-16
以下是一个简单的 Get 请求实例,请求地址是一个js文件:
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="../js/vue.js"></script> <!--vue-resource.min.js就是发起请求的js它依赖于vue.js所以它必须放在vue.js后面--> <script src="../js/vue-resource.min.js"></script> </head> <body> <div id="app"> <button @click="getinfo">get请求</button> </div> <script> var vm = new Vue({ el: ‘#app‘, data: {}, methods: { getinfo() { Vue.http.get("../js/vue.js").then((result) => { //this.$http.get("../js/vue.js").then((result) => { // console.log(result.data); console.log(result.body); //data和body效果一样,推荐使用body }, () => { alert("请求调用失败!"); }); } } }); </script> </body> </html>
post 发送数据到后端,需要第三个参数 {emulateJSON:true}。
emulateJSON 的作用: 如果Web服务器无法处理编码为 application/json 的请求,你可以启用 emulateJSON 选项。
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="../js/vue.js"></script> <script src="../js/vue-resource.min.js"></script> </head> <body> <div id="app"> <button @click="getinfo">get请求</button> <button @click="postinfo">post请求</button> <button @click="jsonpinfo">jsonp请求</button> </div> <script> var vm = new Vue({ el: ‘#app‘, data: {}, methods: { getinfo() { Vue.http.get("../js/vue.js").then((result) => { // this.$http.get("../js/vue.js").then((result) => { console.log(result.body); }, () => { alert("请求调用失败!"); }); }, postinfo() { //发送 post 请求 //第一个参数是请求地址,第二个是数据,第三个是 this.$http.post(‘http://vue.studyit.io/api/post‘, {}, { emulateJSON: true }).then(function (res) { // document.write(res.body); console.log(res.body); }, function (res) { console.log(res.status); }); }, jsonpinfo() {//发送jsonp请求 this.$http.get("../js/vue.js").then((result) => { console.log(result.body); }, () => { alert("请求调用失败!"); }); } } }); </script> </body> </html>
通过设置根域名可以更有效的管理请求地址
定义:
Vue.http.options.root = ‘根地址‘
使用
要想使根路径生效,需要使用相对路径,即url最前面没有/
下面是一个案例
//定义根域名 Vue.http.options.root = ‘../js‘; //..... //发送请求 this.$http.get(‘vue.js‘).then() //上面的地址会自动被拼接成 //../js/vue.js
Vue.http.options.emulateJSON=true;
这样就可以在发送post请求时不设置emulateJSON参数了。