前端在跳转传递参数过长或者含某些特殊字符时跳转失败或者传递参数被截断解决方法

该博客讨论了在页面跳转时如何处理长参数传递的问题。通过使用encodeURIComponent进行编码,以及decodeURIComponent进行解码,可以解决参数过长导致的错误。同时,文中提到了在接收参数时需要对特殊字符如%、?、#、&等进行替换,以避免解析错误。此方法确保了参数的安全传递并成功解析JSON对象。
摘要由CSDN通过智能技术生成

1、页面跳转传递参数过长

如果需要传递的参数content过长,传递的时候会有问题
所以使用
encodeURIComponent来传递,使用decodeURIComponent来接收

toInfo(item) {
				console.log(item)
				let str=encodeURIComponent(JSON.stringify(item))
				let str1=str.replace(/%/g, '%25')
                //因为百分号在接收时会报错,所以转换成16进制%25,
                //如果用下面哪种方法接收处理这一步可以不写
				console.log(encodeURIComponent(JSON.stringify(item)))
				this.$u.route({
					url: 'pages/xiangqing',
					params: {
						info: str1,
					}
				})
			},

在接收参数的时候如果传递的参数中有%#&-传递时会报错
所以要将危险的值替换掉

onLoad(option) {
         option.info =  this.encodeSearchKey(option.info)
  this.info = JSON.parse(decodeURIComponent(option.info));
},
methods: {
 encodeSearchKey(key) {
    const encodeArr = [{
      code: '%',
      encode: '%25'
    }, {
      code: '?',
      encode: '%3F'
    }, {
      code: '#',
      encode: '%23'
    }, {
      code: '&',
      encode: '%26'
    }, {
      code: '=',
      encode: '%3D'
    }];
    return key.replace(/[%?#&=]/g, ($, index, str) => {
      for (const k of encodeArr) {
        if (k.code === $) {
          return k.encode;
        }
      }
    });
  },
}

接收的时候先decodeURIComponent解码再解析JSON字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BUG_Jia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值