JavaScript URL传值过程中遇到的问题及知识点总结


Web系统开发过程中经常用到URL进行传值,刚刚接触时不太会解析,会出现中文乱码问题等。

1、父子页面之间的传值(在一个页面中以加载iframe框架的形式调出另一个页面)。

var URL=“XXXX..?code=aaa&name=liming&age=123”;

在子页面中进行解析时:

var href=window.location.href;  //获取到当前的地址

然后以截取字符串的形式获取相应的参数值(截取字符串的方式适用于参数较少的情况,如果参数较多则不适合);

var code=href.substring(href.indexOf('=')+1,href.indexOf('&'));

.........一次类推获取所有参数。

2、由于URL编码规范中中文属于不合法字符,所以需要编码成合法的URL。

JavaScript中提供的全局函数:

顶层函数(全局函数)

函数 描述
decodeURI() 解码某个编码的 URI。
decodeURIComponent() 解码一个编码的 URI 组件。
encodeURI() 把字符串编码为 URI。
encodeURIComponent() 把字符串编码为 URI 组件。
escape() 对字符串进行编码。
eval() 计算 JavaScript 字符串,并把它作为脚本代码来执行。
getClass() 返回一个 JavaObject 的 JavaClass。
isFinite() 检查某个值是否为有穷大的数。
isNaN() 检查某个值是否是数字。
Number() 把对象的值转换为数字。
parseFloat() 解析一个字符串并返回一个浮点数。
parseInt() 解析一个字符串并返回一个整数。
String() 把对象的值转换为字符串。
unescape() 对由 escape() 编码的字符串进行解码。

例如:

var url="XXXXX..?code=111&name=晓明&age=123";

window.location.assign(encodeURL(url));

在另一个页面解析的时候为:

var href=decodeURL(location.href);


定义一个函数方便获取url中的参数

函数1:(当参数中没用中文的时候使用)

function getURLParameter(){

var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");

var href = decodeURI(location.href);

var r = window.location.search.substr(1).match(reg);

if (r != null) return unescape(r[2]);

return null;

}

函数2:(当参数中用中文的时候使用)

function getURLParameter(name) {

var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");

var l = decodeURI(window.location.search);

var r = l.substr(1).match(reg);

if (r != null) return unescape(r[2]);

return null;

}


对应的知识点:

RegExp 对象

RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

语法:new RegExp(pattern, attributes);

·

参数

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

返回值

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

抛出

SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g"、"i" 和 "m" 之外的字符,抛出该异常。

TypeError - 如果 pattern 是 RegExp 对象,但没有省略 attributes 参数,抛出该异常。


Location 对象


Location 对象

Location 对象包含有关当前 URL 的信息。

Location 对象是 window 对象的一部分,可通过 window.Location 属性对其进行访问。

注意: 没有应用于Location对象的公开标准,不过所有浏览器都支持该对象。


Location 对象属性

属性 描述
hash 返回一个URL的锚部分
host 返回一个URL的主机名和端口
hostname 返回URL的主机名
href 返回完整的URL
pathname 返回的URL路径名。
port 返回一个URL服务器使用的端口号
protocol 返回一个URL协议
search 返回一个URL的查询部分

Location 对象方法

方法 说明
assign() 载入一个新的文档
reload() 重新载入当前文档
replace() 用新的文档替换当前文档

JavaScript URL传值过程中遇到的问题及知识点总结的更多相关文章

  1. 解决url传递过程中加号变空格的问题

    url传递过程中加号变空格 在接收url参数的过程中,会发现如果参数中存在‘+’号,接收后会变成空格. 如11+22接收后变成11 22. 要解决这个问题,需要将加号替换为%2B进行传递. 如11%2 ...

  2. 解决url传递过程中加号变空格的问题<转>

    url传递过程中加号变空格在接收url参数的过程中,会发现如果参数中存在‘+’号,接收后会变成空格. 如11+22接收后变成11 22.要解决这个问题,需要将加号替换为%2B进行传递. 如11%2B2 ...

  3. [工具向]__关于androidstudio工具使用过程中学习到的一些知识点简记

    前言 在我学习android开发课程的过程中,我们通常只会关注编程语言上面的一些知识点与问题,而忽略了开发工具的使用上的一些遇到的一些知识,其实每一款IDE工具都是集编程语言大成而开发出来的,其中有很 ...

  4. Canesten 项目申请ICP备案过程中遇到的问题及知识点扩充

    遇到的问题:Canesten备案主体是Bayer *** Ltd., Shanghai Branch, 而提供的IP是 Bayer (China)limited,违背了电信要求的三一致原则,即备案主体 ...

  5. Struts2接受页面传值过程中出现input的问题

    其实我在使用Struts2的时候,遇到要求返回input的时候不算少.一般我们在使用Struts2的时候,都会返回SUCCESS/ERROR,或者是NONE以到Strtuts的配置文件中再进行相应的处 ...

  6. Tomcat 使用过程中的一些技巧

    url中文地址乱码 原因: tomcat默认的在url传输时是用iso8859-1编码. 解决方案一: 在使用get传输参数时,将参数中的中文转换成url格式,也就是使用urlEncode和urlDe ...

  7. JavaScript的执行过程(深入执行上下文、GO、AO、VO和VE等概念)

    JavaScript的执行过程 前言 编写一段JavaScript代码,它是如何执行的呢?简单来说,JS引擎在执行JavaScript代码的过程中需要先解析再执行.那么在解析阶段JS引擎又会进行哪些操 ...

  8. 记录常见的问题:encodeURICompnent 解码过程中出现空格 以及 第三方app中使用schema 唤起app

    window.location.href 跳转的时候使用了encodeURIComponent编码了部分参数,但是在第三方app中出现了编码过后的参数换行和空格的情况(部分第三方应用或者java程序) ...

  9. 从输入 URL 到浏览器接收的过程中发生了什么事情

    从输入 URL 到浏览器接收的过程中发生了什么事情? 原文:http://www.codeceo.com/article/url-cpu-broswer.html 从触屏到 CPU  首先是「输入 U ...

随机推荐

  1. SQLServer 索引总结

    测试案例: SET STATISTICS IO ON SET STATISTICS TIME ON SET STATISTICS PROFILE ON SELECT  count(A.CarrierT ...

  2. 微信终端开发团队:新年新语言,WCDB Swift

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:sanhuazhang,此文发布在微信终端开发团队的专栏 WCDB 作为微信的终端数据库,从 2017.6 开源至今,共迭代了 5 个版本 ...

  3. 通过ArcMap发布服务

    打开ArcMap,添加一个空地图 单击添加数据按钮 单击之后出现下图 点击 (连接到文件夹)按钮选择要添加的文件.添加之后如下. 保存为mxd文件 点击保存按钮就可以保存为mxd格式文件. 选择 Fi ...

  4. 记一次电信反射xss的挖掘与利用

    0X0.前言 早上起床,打开手机习惯性刷刷新闻,却发现网络无法连接,本以为是光猫出现了问题,后来发现是忘记续费,欠费了. 在网上充值完之后,等了有将近十分钟,网依旧没恢复.随打了个电话给客服,客服在后 ...

  5. SQLAlchemy基础操作一

    用前安装 pip3 install sqlalchemy ORM ORM就是运用面向对象的知识,将数据库中的每个表对应一个类,将数据库表中的记录对应一个类的对象.将复杂的sql语句转换成类和对象的操作 ...

  6. echart

    先介绍echart: 官网: http://echarts.baidu.com  看名字就知道是百度出品的.       ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC ...

  7. Django源码分析之程序执行入口分析

    一般我们开启一个django项目,最简单的方法是进入project 目录,这时目录结构是这样的 然后我们执行python manage.py runserver,程序就开始执行了. 那django是如 ...

  8. 关于mybatis-generator的问题

    1.运行完mybatis-generator没有出现问题,但是代码看不到,出现这种东西: 你需要使用相对路径,如项目名+/src/main/java,就可以解决了 2.附录我的代码以供参考: < ...

  9. Erlang内存吃紧之解决思路

    首先使用erlang:memory()确定是哪个部分内存吃紧,根据输出的内容,比对内存占用大小,有针对性地进行分析.在erlang系统里内存的单位为word,通过erlang:system_info( ...

  10. <select>简易的二级联动

    1.首先是表单页面: <tr> <td align="right"> <label class="Validform_label" ...