fail page "/pages/member/index 已解决但恶心
发布于 5 年前 作者 ping97 11377 次浏览 来自 问答

首先说明这个页面地址是实实存在的

说下我的场景,我某些场景要把当前页面地址及参数获取到,然后传递给下一个页面。所以我把当前页面地址及参数进行了base64字符串传递。下一个页面接收到后解析出来。解析出来的结果都跟传递的时候一模一样的,没有任何的区别。在我要跳转的地方我把接收到的值丢进去回来原来的来路后就出现 了fail page ‘pages/member/index’

console.log(that.data.options.page);
console.log('/pages/member/index');
console.log(typeof that.data.options.page);
console.log(typeof '/pages/member/index');
let url = '/pages/index/index';
if (that.data.options.page) {
url = that.data.options.page;
}
wx.redirectTo({
url: url
});

如果我把url直接手工输入 字符串是没有任何跳转问题的。一旦我换成变量就把不到路径了!

解决方法

options.page = '/' + Base64.decode(options.page);

强制在前面加了个 ‘/’ 通过参数带过来的/是有问题的,只有解析后再加。真恶心!

4 回复

这是模拟单点登录的节奏啊

测试了一下,变量方式传参,正常跳转,你贴下完整代码看看

A

onLoad(options) {
let isRegister = wx.getStorageSync('isRegister');
 if (!isRegister) {
let url = Base64.encode(getUrl());
   wx.redirectTo({
url: "/pages/authorize/index?page=" + url
});
   return false;
 }
this.getData();
}

page: /pages/member/index

B

onLoad(options) {
if (!(JSON.stringify(options) === "{}")) {
if (options.page) {
options.page = Base64.decode(options.page);
     console.log(options.page);
   }
this.setData({
options: options
});
 }
},

B页面处理跳转

if (res.data.data.isRegister) {

wx.setStorageSync('isRegister', true);

 //默认地址

 let url = '/pages/index/index';

 if (that.data.options.page) {

   //来路地址

   url = that.data.options.page;
 }
 wx.
redirectTo({
   
url: url
 })
;
} else {
 wx.setNavigationBarTitle({
   
title: '注册用户'
 });
 that.setData({
   
display: true,
   openid: res.data.data.openid,
   token: res.data.data.token,
   nickname: nickname
 })
}

执行结果:fail page "/pages/member/index

结果图片

console.log(JSON.parse(JSON.stringify(that.data.options.page)));

跳转之前打印下 是一样的吗?

回到顶部