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

相关文章

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam