欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解Vuejs2.0之异步跨域请求

程序员文章站 2022-06-03 11:57:45
vuejs由1.0更新到了2.0版本。http请求官方也从推荐使用vue-resoure变为了axios。接下来我们来简单地用axios进行一下异步请求。(阅读本文作者默认...

vuejs由1.0更新到了2.0版本。http请求官方也从推荐使用vue-resoure变为了axios。接下来我们来简单地用axios进行一下异步请求。(阅读本文作者默认读者具有使用npm命令的能力,以及具备es6的能力,以及等等。。。)

首先我们来安装vue-cli开发模板(这个模板可以快速生成vuejs的运行配置环境,可以使新手快速免除配置搭建出运行界面),这里我使用cnpm命令,请自行百度配置。

打开命令窗口:

cnpm install -g vue-cli

详解Vuejs2.0之异步跨域请求

等待片刻,即可安装完毕。

然后新建一个vuejs项目

vue init webpack axiosproject

详解Vuejs2.0之异步跨域请求

切换到项目目录,执行命令:

cnpm install axios --save --dev

详解Vuejs2.0之异步跨域请求

最后执行命令安装项目所需依赖:

cnpm install

详解Vuejs2.0之异步跨域请求

稍等片刻,即可完成。现在我们来跑一下用vue-cli搭建出来的项目,执行命令:

cnpm run dev

自动浏览器自动弹出这个界面就说明上面的步骤我们成功实现了。

详解Vuejs2.0之异步跨域请求

接下来我才来真正的开始用编辑器来使用axios。打开vs code(编辑器请自行用自己喜欢的,本人软粉,所以首选vs code),我们来改造一下main.js入口文件

import vue from 'vue'
import app from './app'
import axios from 'axios'
vue.prototype.$http = axios;
/* eslint-disable no-new */
new vue({
 el: '#app',
 template: '<app/>',
 components: { app }
})

详解Vuejs2.0之异步跨域请求

我们引用了axios,再将axios这个对象clone到vue的$http这个属性上,以后我们就可以在其他组件里使用axios来进行 异步请求了。不多说了,我们最终的结果就是将请求的数据打印到浏览器控制台就算成功了。我使用的接口是本地模拟的,不过区别不大。这里特别说明一下关于跨域,跨域需要配置返回的请求头,在asp.core做如下处理,其他后端配置可以参照;

详解Vuejs2.0之异步跨域请求

这是get接口返回在浏览器返回结果:

详解Vuejs2.0之异步跨域请求

好,接下来我们在hello.vue这个组件里写一些脚本

<script>
export default {
 name: 'hello',
 data () {
 return {
  msg: 'welcome to your vue.js app'
 }
 },
 created:function(){
 this.helloaxios();
 },
 methods:{
 helloaxios(){
  this.$http.get('http://localhost:54903/api/values').then(m=>console.log(m.data));
 }
 }
}
</script>

详解Vuejs2.0之异步跨域请求

至此我们完成了get请求,接下来,我们完成post请求

<script>
export default {
 name: 'hello',
 data () {
 return {
  msg: 'welcome to your vue.js app'
 }
 },
 created:function(){
 this.helloaxios();
 this.helloaxiospost('helloaxiospost');
 },
 methods:{
 helloaxios(){
  this.$http.get('http://localhost:54903/api/values').then(m=>console.log(m.data));
 },
 helloaxiospost(val){
  let str = 'value='+val
  this.$http.post('http://localhost:54903/api/values',str).then(m=>console.log(m.data));
 }
 }
}
</script>

详解Vuejs2.0之异步跨域请求

结果如图,我们传的值'helloaxiospost'也打印出来了。有人可能会问

 详解Vuejs2.0之异步跨域请求

这里问什么要这么写,官方文档是这么写的

详解Vuejs2.0之异步跨域请求

亲测这样写不行。有兴趣的朋友可以自行测试。那我们再来说说为何是那个字符串

详解Vuejs2.0之异步跨域请求

查看chorme f12查看一下网络请求,发现我们请求的值就是form data。这样我们就可以拼接参数请求了,多参数格式为param1=value1&param2=value2。

好了,至此本文结束了,希望对大家的学习有所帮助,也希望大家多多支持。