标签导航:
vue本身是不支持ajax请求的,但是可以利用“vue-resource”、axios等插件实现vue发送ajax请求;axios是一个基于promise的http请求客户端,用于发送请求,“vue-resource”是一个插件用于提供使用xmlhttprequest或jsonp进行web请求和处理响应的服务。

vue支持ajax吗

本教程操作环境:windows10系统、Vue3版、Dell G3电脑。

vue支持ajax吗

vue本身不支持发送AJAX请求,需要使用vue-resource(vue1.0版本)、axios(vue2.0版本)等插件实现

axios是一个基于Promise的HTTP请求客户端,用来发送请求,也是vue2.0官方推荐的,同时不再对vue-resource进行更新和维护

vue-resource是Vue.js的插件提供了使用XMLHttpRequest或JSONP进行Web请求和处理响应的服务。 

当vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios,在这里大家了解一下vue-resource就可以。

vue使用axios发送AJAX请求:

首页安装并引入axios

npm install axios -S

或者网上直接下载axios.min.js文件通过script src的方式进行文件的引入

<script></script>
import axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios,axios);
Vue.prototype.$axios = axios;

*get请求

1、基本使用格式

格式1:axios([options]) #这种格式直接将所有数据写在options里

格式2:axios.get(url[,options])

2、传参方式:

通过url传参

通过params选项传参

代码片段:

<p>
    <input></p>
<p>
    <input></p>
<a>注册账号</a>
<p>
    <button>立即登录</button>
</p>
<script>
  export default {
    data:function(){
      return{
        none: false,
        loginForm: {
          loginName: &#39;&#39;,
          passWord: &#39;&#39;
        }
      }
    },
    methods: {
      gotoRegister:function(){
        this.$router.push({
          name:&#39;register&#39;
        });
      },
      doLogin(){
//接口  this.$axios.get(接口地址).then(function(respon){}).catch(function(error){})
        let _this = this;
        if (this.loginForm.loginName === &#39;&#39; || this.loginForm.passWord === &#39;&#39;) {
          alert(&#39;账号或密码不能为空&#39;);
        } else {
          this.$axios.get("/WebUserLogin",{
            params:_this.loginForm
          }).then(res=>{
            var result = JSON.parse(res.data);
            // console.log(result);
            if (result.state == &#39;ok&#39;) {
               // console.log(&#39;登陆成功&#39;);
               window.sessionStorage.setItem(&#39;token&#39;, result.token) //存入token
               _this.$router.push(&#39;/index&#39;);
            }else{
              alert(&#39;登录失败请检查用户名和密码是否正确&#39;);
            }
          }).catch(error => {
            alert(&#39;账号或密码错误&#39;);
            // console.log(error);
          });

        }

      }
    }
  }
</script>

*post请求 (push,delete的非get方式的请求都一样)

格式:axios.post(url,data,[options]) 或者 axios([options])

<script>
  import qs from &#39;qs&#39;
  export default {
    data:function(){
      return{
        none: false,
        registerForm: {
          LoginName: &#39;&#39;,
          LoginPassword: &#39;&#39;
        }
      }
    },
    methods: {
        register(){
          let _this = this;
          if (this.registerForm.LoginName === &#39;&#39; || this.registerForm.LoginPassword === &#39;&#39;) {
            alert(&#39;注册信息不能空&#39;);
          } else {
            this.$axios({ 
              url:"/WebUserRegist",
              method:"post",
              data:qs.stringify(_this.registerForm)
            }).then(res=>{
              var result = JSON.parse(res.data);
              // console.log(result);
              if (result.state == &#39;ok&#39;) {
                 alert(&#39;注册成功去登录&#39;);
                 _this.$router.push(&#39;/&#39;);
              }else{
                alert(&#39;注册失败请检查注册信息是否正确&#39;);
              }
            }).catch(error => {
              alert(&#39;注册信息有误&#39;);
              // console.log(error);
            });

          }
        }
    }
  }
</script>

index.js全局守卫

router.beforeEach((to,form,next) =&gt;{
      //如果进入到的路由是登录页或者注册页面,则正常展示
      if (to.path === '/login') {
          next();
        } else {
          let token = window.sessionStorage.getItem('token');
          // console.log(token)
          if (token === null || token === '') {
            next('/login');
            // alert("还没有登录,请先登录!");
          } else {
            next();
          }
        }
      // console.log(to)
  })