URL中传参带有等特殊字

用URL传参带特殊字符,特殊字符丢失,比如传参的时候,用&符号连接,如果其中的一个参数中含有 # $ ^ & * + - 这些符号的时候,在另一个页面getParameter就会取不到穿过来的参数。

比如在a.jsp中,我要跳转到b.jsp,在a.jsp中这样写:
b.jsp?Parameter1=wks&Parameter2=happycosn。
如果Parameter1中含有"#$ ^ & * + =“这些特殊字符,在b.jsp中就得不到。并且,我在a.jsp中已经通过encode编码了,
在b.jsp中也用decode 进行了解码。这时候,只要
所传入的参数没有特殊字符都可以在b.jsp页面取到,但是有特殊字符就取不到了。 像这样:
b.jsp?Parameter1=wks#bamboo&Parameter2=happycosn+#zl
这时候,所取到的参数就不会有bamboo和zl。
解决问题如下:
有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。
编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是”%20"。
如果不使用转义字符,这些编码就会当URL中定义的特殊字符处理。
下表中列出了一些URL特殊符号及编码 十六进制值
1.+ URL 中+号表示空格 %2B
2.空格 URL中的空格可以用+号或者编码 %20
3./ 分隔目录和子目录 %2F
4.? 分隔实际的 URL 和参数 %3F
5.% 指定特殊字符 %25
6.# 表示书签 %23
7.& URL 中指定的参数间的分隔符 %26
8.= URL 中指定参数的值 %3D

在 Vue2 中,获取 URL 地址是否传参有多种方法,以下是详细介绍: - **使用 `this.$route.query`**:在 Vue 组件里,可借助 `this.$route.query` 来获取 URL 中的查询参数。若 `this.$route.query` 不为空对象,就表明 URL传参。示例代码如下: ```javascript export default { created() { if (Object.keys(this.$route.query).length > 0) { console.log('URL传参'); console.log(this.$route.query); } else { console.log('URL 没有传参'); } } } ``` 此方法适用于普通的 Vue 路由传参场景,像从一个页面跳转到另一个页面并传递参数的情况 [^1][^2]。 - **使用 `watch` 监听 `$route` 对象**:可以利用 `watch` 来监听 `$route` 对象的变化,当 `$route.query` 发生变化时进行判断。示例代码如下: ```javascript export default { watch: { '$route.query': { handler(newQuery) { if (Object.keys(newQuery).length > 0) { console.log('URL传参'); console.log(newQuery); } else { console.log('URL 没有传参'); } }, immediate: true } } } ``` 这种方法能实时监测 URL 参数的变化,当路由变化时自动进行判断 [^2]。 - **使用 JavaScript 的 `split` 拆分取参**:若遇到外系统跳转进入的 URL 带有特殊后缀(如 “`#/`”),可使用 JavaScript 的 `split` 方法来解析 URL 参数。示例代码如下: ```javascript function getUrlParam() { var url = location.search; var theRequest = new Object(); if (url.indexOf("?") != -1) { var str = url.substr(1); var strs = str.split("&"); for(var i = 0; i < strs.length; i ++) { theRequest[strs[i].split("=")[0]] = decodeURIComponent(strs[i].split("=")[1]); } } return theRequest; } var Request = getUrlParam(); if (Object.keys(Request).length > 0) { console.log('URL传参'); console.log(Request); } else { console.log('URL 没有传参'); } ``` 该方法适用于特殊URL 格式,在普通的 Vue 路由传参方法无法使用时可以采用 [^1][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值