问题描述
vue由于url中含有‘#’号,导致调用微信支付报‘url未注册…'的错误。
解决方法:
在网上查了许久,说的最多的就是改变vue路由模式,由’hash’改为‘history’来去掉’#‘。但vue+laravel模式下,即使改过来仍有’#‘号。
最终看到一篇贴子,在mounted方法来中替换url中’#‘号。
步骤如下:
1 仍把路由模式改为history:
const router = new VueRouter({
routes,
mode: 'history',
// base: '/wenchao/',
strict: process.env.NODE_ENV !== 'production',
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
return savedPosition
} else {
if (from.meta.keepAlive) {
from.meta.savedPosition = document.body.scrollTop
}
return {
x: 0,
y: to.meta.savedPosition || 0
}
}
}
})
- 在调用支付页面的mounted() 方法里增加以下代码:
if (window.location.href.indexOf("??#") < 0) { window.location.href = window.location.href.replace("#", "??#"); }
注意:我的代码是换成’??#'字符的,网上贴子里是换‘?#’,但我发现在微信调用时会去掉?号,达不到效果,于是改成??解决。
此方法参照了chi1130 的这篇文章:https://blog.csdn.net/chi1130/article/details/99479309
在此感谢。