vue支援ajax嗎

2022-07-01 18:00:33

vue本身是不支援ajax請求的,但是可以利用「vue-resource」、axios等外掛實現vue傳送ajax請求;axios是一個基於Promise的HTTP請求使用者端,用於傳送請求,「vue-resource」是一個外掛用於提供使用XMLHttpRequest或JSONP進行Web請求和處理響應的服務。

本教學操作環境: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 src="js/axios.min.js"></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 class="lgD">
    <input type="text" placeholder="輸入使用者名稱"   v-model="loginForm.loginName"/>
</p>
<p class="lgD">
    <input type="password" placeholder="輸入使用者密碼" v-model="loginForm.passWord"/>
</p>
<a class="register" @click="gotoRegister()">註冊賬號</a>
<p class="logC">
    <button @click="doLogin" type="button">立即登入</button>
</p>
<script>
  export default {
    data:function(){
      return{
        none: false,
        loginForm: {
          loginName: '',
          passWord: ''
        }
      }
    },
    methods: {
      gotoRegister:function(){
        this.$router.push({
          name:'register'
        });
      },
      doLogin(){
//介面  this.$axios.get(介面地址).then(function(respon){}).catch(function(error){})
        let _this = this;
        if (this.loginForm.loginName === '' || this.loginForm.passWord === '') {
          alert('賬號或密碼不能為空');
        } else {
          this.$axios.get("/WebUserLogin",{
            params:_this.loginForm
          }).then(res=>{
            var result = JSON.parse(res.data);
            // console.log(result);
            if (result.state == 'ok') {
               // console.log('登陸成功');
               window.sessionStorage.setItem('token', result.token) //存入token
               _this.$router.push('/index');
            }else{
              alert('登入失敗請檢查使用者名稱和密碼是否正確');
            }
          }).catch(error => {
            alert('賬號或密碼錯誤');
            // console.log(error);
          });

        }

      }
    }
  }
</script>

*post請求 (push,delete的非get方式的請求都一樣)

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

<script>
  import qs from 'qs'
  export default {
    data:function(){
      return{
        none: false,
        registerForm: {
          LoginName: '',
          LoginPassword: ''
        }
      }
    },
    methods: {
        register(){
          let _this = this;
          if (this.registerForm.LoginName === '' || this.registerForm.LoginPassword === '') {
            alert('註冊資訊不能空');
          } 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 == 'ok') {
                 alert('註冊成功去登入');
                 _this.$router.push('/');
              }else{
                alert('註冊失敗請檢查註冊資訊是否正確');
              }
            }).catch(error => {
              alert('註冊資訊有誤');
              // console.log(error);
            });

          }
        }
    }
  }
</script>

index.js全域性守衛

router.beforeEach((to,form,next) =>{
      //如果進入到的路由是登入頁或者註冊頁面,則正常展示
      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)
  })

【相關推薦:《》】

以上就是vue支援ajax嗎的詳細內容,更多請關注TW511.COM其它相關文章!