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

相关文章

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字