URL传参,用JQ进行编码后传参数给新页面,新页面用JQ进行接收,添加一个自定义函数,获取URL尾部,并用正则表达式进行筛选,最后解码并输出。

本文主要是介绍URL传参,用JQ进行编码后传参数给新页面,新页面用JQ进行接收,添加一个自定义函数,获取URL尾部,并用正则表达式进行筛选,最后解码并输出。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • A页面代码部分:
    • B页面代码部分:

我用的是通过点击组件进行触发,实际所用触发方式各自发挥想象


此处用 A页面(跳转前) 和 B页面(跳转后) 作为代称

A页面代码部分:

<script src="js/jquery-1.12.4.js"></script>
<script>$(function(){$('span').click(function(){var num = encodeURIComponent('465')var content = encodeURIComponent(this.childNodes[0].nodeValue);location.href = "http://www.baidu.com?" + 'content'+ '=' + content + '&num' + num;});})
</script>
<body><span>这是中文内容</span>
</body>

我们都知道Http协议中参数的传输是"key=value"这种简直对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割。如"?name1=value1&name2=value2",这样在服务端在收到这种字符串的时候,会用“&”分割出每一个参数,然后再用“=”来分割出参数值。但如果参数值中包含=或&这种特殊字符的时候就产生了奇异。

如果传递的参数包含中文或者 “&” 字符,比如

location.href = http://www.baidu.com?content=AAAA&BBBB&num=465

根据下面的正则表达式你获取content的时候只剩下 “AAAA” ,因为&已经被当做结尾了。所以后面的BBBB就会被过滤掉。内容是中文的情况下则会乱码

所以传参前最好最好最好最好最好先编码。

在本案例中获取文本时为什么用childNodes[0].nodeValue而不是用innerHTML的原因是因为如果获取内容的时候包含&,&在html是转义字符,如空格 “&nbsp;”。那么获取后的结果是 ”&amp;“ 这明显会出问题。所以通过获取节点内容的方式获取。

URL编码只是简单的在特殊字符的各个字节前加上%,%后面为其特定的数字

编码相关函数

编码:escape( )
escape( ) 方法生成新的由十六进制转义序列替换的字符串。
已废弃: 该特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。

解码:unescape( )

编码:encodeURI( )
encodeURI( ) 函数通过将特定字符的每个实例替换为一个、两个、三或四转义序列来对统一资源标识符 (URI) 进行编码 (该字符的 UTF-8 编码仅为四转义序列) 由两个 “代理” 字符组成)。

解码:decodeURI( )

编码:encodeURIComponent( )
encodeURIComponent() 函数通过将一个,两个,三个或四个表示字符的 UTF-8 编码的转义序列替换某些字符的每个实例来编码 URI(对于由两个“代理”字符组成的字符而言,将仅是四个转义序列)。

解码:decodeURIComponent( )

encodeURI( ) 与 encodeURIComponent( ) 最大的区别就是后者会对 =、&等字符 编码,而前者不会。

由于本案例中提到的内容包含&等字符的情况会出现问题,所以用encodeURIComponent( )进行编码

最后通过点击span部分即打开B页面

B页面代码部分:

<script src="js/jquery-1.12.4.js"></script>
<script>$(function(){$('#bbb').html(getUrl('content'));})function getUrl(mane){var guize = new RegExp('(^|&)' + mane + '=([^&]*)(&|$)','i');var wenz = window.location.search.substr(1).match(guize);if(wenz != null){return decodeURIComponent(wenz[2])}return null;}
</script>
<body><span id="bbb">加载中</span>
</body>

因为获取参数可能会分多次获取,所以用函数承载。

正则表达式用来筛选出 “=” 后面的内容。

Location 对象
Location 对象包含有关当前 URL 的信息。
Location 对象是 window 对象的一部分,可通过 window.location.xxx 格式的相关属性对其进行访问。

Location search 属性
search 属性是一个可读可写的字符串,可设置或返回当前 URL 的查询部分(问号 ? 之后的部分)。

substr( )
substr() 方法可在字符串中抽取从 开始 下标开始的指定数目的字符。
提示: substr() 的参数指定的是子串的开始位置和长度,因此它可以替代 substring() 和 slice() 来使用。

用substr(1)去掉URL后面的问号

match( )
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。结果输出类型为数组

最后用match( )添加合适的正则表达式,得到的结果根据内容在数组的第几个,选取后进行解码返回值即可


如果完全看不懂正则表达式的话可以去看看b站的视频

10分钟快速掌握正则表达式
最后的总结表

这篇关于URL传参,用JQ进行编码后传参数给新页面,新页面用JQ进行接收,添加一个自定义函数,获取URL尾部,并用正则表达式进行筛选,最后解码并输出。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/235526

相关文章

springboot的controller中如何获取applicatim.yml的配置值

《springboot的controller中如何获取applicatim.yml的配置值》本文介绍了在SpringBoot的Controller中获取application.yml配置值的四种方式,... 目录1. 使用@Value注解(最常用)application.yml 配置Controller 中

pandas使用apply函数给表格同时添加多列

《pandas使用apply函数给表格同时添加多列》本文介绍了利用Pandas的apply函数在DataFrame中同时添加多列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录一、Pandas使用apply函数给表格同时添加多列二、应用示例一、Pandas使用apply函

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

python3中正则表达式处理函数用法总结

《python3中正则表达式处理函数用法总结》Python中的正则表达式是一个强大的文本处理工具,用于匹配、查找、替换等操作,在Python中正则表达式的操作主要通过内置的re模块来实现,这篇文章主要... 目录前言re.match函数re.search方法re.match 与 re.search的区别检索

Python中Namespace()函数详解

《Python中Namespace()函数详解》Namespace是argparse模块提供的一个类,用于创建命名空间对象,它允许通过点操作符访问数据,比字典更易读,在深度学习项目中常用于加载配置、命... 目录1. 为什么使用 Namespace?2. Namespace 的本质是什么?3. Namesp

kafka自定义分区器使用详解

《kafka自定义分区器使用详解》本文介绍了如何根据企业需求自定义Kafka分区器,只需实现Partitioner接口并重写partition()方法,示例中,包含cuihaida的数据发送到0号分区... 目录kafka自定义分区器假设现在有一个需求使用分区器的方法总结kafka自定义分区器根据企业需求

Java JAR 启动内存参数配置指南(从基础设置到性能优化)

《JavaJAR启动内存参数配置指南(从基础设置到性能优化)》在启动Java可执行JAR文件时,合理配置JVM内存参数是保障应用稳定性和性能的关键,本文将系统讲解如何通过命令行参数、环境变量等方式... 目录一、核心内存参数详解1.1 堆内存配置1.2 元空间配置(MetASPace)1.3 线程栈配置1.

linux实现对.jar文件的配置文件进行修改

《linux实现对.jar文件的配置文件进行修改》文章讲述了如何使用Linux系统修改.jar文件的配置文件,包括进入文件夹、编辑文件、保存并退出编辑器,以及重新启动项目... 目录linux对.jar文件的配置文件进行修改第一步第二步 第三步第四步总结linux对.jar文件的配置文件进行修改第一步进

MySQL中如何求平均值常见实例(AVG函数详解)

《MySQL中如何求平均值常见实例(AVG函数详解)》MySQLavg()是一个聚合函数,用于返回各种记录中表达式的平均值,:本文主要介绍MySQL中用AVG函数如何求平均值的相关资料,文中通过代... 目录前言一、基本语法二、示例讲解1. 计算全表平均分2. 计算某门课程的平均分(例如:Math)三、结合

golang实现nacos获取配置和服务注册-支持集群详解

《golang实现nacos获取配置和服务注册-支持集群详解》文章介绍了如何在Go语言中使用Nacos获取配置和服务注册,支持集群初始化,客户端结构体中的IpAddresses可以配置多个地址,新客户... 目录golang nacos获取配置和服务注册-支持集群初始化客户端可选参数配置new一个客户端 支