如何在 Vue 項目中發送 jsonp 請求

原由

公司臨時要支撐河南的一個項目,作一個單點登陸的功能。
簡單來講,就是如下👇👇👇3步
  • 客戶方點擊某個按鈕進入咱們的頁面a
  • 在頁面a中由前端發送一個jsonp請求到客戶方,獲得一個token值
  • 前端獲得token值後向本身後端發送一個請求,後端根據token去redis(token的值就是redis裏的key)裏取值(key=token的值,value=用戶信息等)判斷用戶是否已登錄,若登錄則根據取到的工號等信息後端模擬登錄,若沒有登錄,則跳轉到客戶方登錄頁面

怎麼作

發送jsonp請求,axios官方貌似並不支持,因此排除🙅🏻‍♀️
通過展轉Google,發現了*vue-jsonp*這個插件

使用vue-jsonp

官方地址:vue-jsonpjavascript

  • 下載
npm install vue-jsonp --save-dev
  • 引入項目
import Vue from 'vue'
import VueJsonp from 'vue-jsonp'
Vue.use(VueJsonp)
  • 而後,咱們就能夠在項目中愉快地使用啦✨✨

項目中xxx.vue文件

<script>
export default {

    data() {...},
    created() {
        // 
        this.getJson()
    },
    mounted() {
        window.jsonpCallback = (data) => {
            console.log(data.token)
            // 調用獲取後端token的方法
            this.getToken(data.token)
        }
    },
    methods: {
        getJson() {
          this.$jsonp(this.url, {
            callbackQuery: "callbackParam",
            callbackName: "jsonpCallback"
          })
            .then((json) => {
            // 返回的jsonp數據不會放這裏,而是在 window.jsonpCallback
              console.log(json)
            })    
        },
        
        getToken(token) {
            this.axios.post('/xxxurl')
                .then((res) => {
                    // success 以後就正常登錄了
                })
        
        }
    
    }
 }   
</script>

是否是so easy 🤡可是真的整了一夜才整出來,誰能知道jsonp的返回值在then裏返回不了呢,打印也打印不出來。。。前端

就醬。see youvue

相關文章
相關標籤/搜索