无法读取查询参数,因为 vue.js 将 #/ 添加到 url 的末尾

Posted

技术标签:

【中文标题】无法读取查询参数,因为 vue.js 将 #/ 添加到 url 的末尾【英文标题】:Cannot read query params becouse vue.js is adding #/ to the end of url 【发布时间】:2018-08-01 02:22:18 【问题描述】:

我在 vueJS 中有一个单页应用:

let router = new VueRouter(
  routes: [
     path: '/',  component: Dis13HomeComponent ,
     path: '**', component: Dis13HomeComponent 
  ]
);

在mounted() 的主要组件中,我得到这样的url 参数:

this.$route.query.token;

但是如果我打开 http://www.myapp.com/app.html?token=s56ds6d5d56f6ef6e 它不会读取令牌参数,因为 vue 正在将 #/ 添加到 url 的末尾,所以它看起来像 http://www.myapp.com/app.html?token=s56ds6d5d56f6ef6e#/

如果我打开这种格式的 url:http://www.myapp.com/app.html#/?token=s56ds6d5d56f6ef6e,那么它可以工作,但是这个路径在服务器上是被禁止的。

如何读取令牌参数?

【问题讨论】:

【参考方案1】:

让您的路由器使用history 模式,您将不再拥有“#”。

const router = new VueRouter(
  mode: 'history',     // <------------- HERE
  routes: [
     path: '/',  component: Dis13HomeComponent ,
     path: '**', component: Dis13HomeComponent 
  ]
);

【讨论】:

以上是关于无法读取查询参数,因为 vue.js 将 #/ 添加到 url 的末尾的主要内容,如果未能解决你的问题,请参考以下文章

使用 Vue.js 将方法结果绑定到 v-model

Vue.js - 无法读取未定义的属性“推送”[重复]

无法在 vue.js 中读取“未定义”的属性

Vue.js:TypeError:无法读取未定义的属性“$router”?

Vue.js + Firestore 无法读取未定义的属性“集合”

如何解决“未捕获的类型错误:无法读取未定义的属性'get'”? (Vue.JS 2)