url查询参数解析
2024-10-18 21:21:39
url查询参数解析
1.获取url的各部分值
举例http://i.cnblogs.com/EditPosts.aspx?opt=1 1、window.location.href(设置或获取整个 URL 为字符串) var test = window.location.href;
alert(test);
返回:http://i.cnblogs.com/EditPosts.aspx?opt=1 2、window.location.protocol(设置或获取 URL 的协议部分) var test = window.location.protocol;
alert(test);
返回:http: 3、window.location.host(设置或获取 URL 的主机部分) var test = window.location.host;
alert(test);
返回:i.cnblogs.com 4、window.location.port(设置或获取与 URL 关联的端口号码) var test = window.location.port;
alert(test);
返回:空字符(如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符) 5、window.location.pathname(设置或获取与 URL 的路径部分(就是文件地址))
var test = window.location.pathname;
alert(test);
返回:/EditPosts.aspx 6、window.location.search(设置或获取 href 属性中跟在问号后面的部分) var test = window.location.search;
alert(test);
返回:?opt=1 PS:获得查询(参数)部分,除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值。 7、window.location.hash(设置或获取 href 属性中在井号“#”后面的分段) var test = window.location.hash;
alert(test);
返回:空字符(因为url中没有)
2.将url查询参数通过正则表达式解析成数据字典
function getQueryObject(url) {
url = url == null ? window.location.href : url;
var search = url.substring(url.lastIndexOf("?") + 1);
var obj = {};
var reg = /([^?&=]+)=([^?&=]*)/g;
// [^?&=]+表示:除了?、&、=之外的一到多个字符
// [^?&=]*表示:除了?、&、=之外的0到多个字符(任意多个)
search.replace(reg, function (rs, $1, $2) {
var name = decodeURIComponent($1);
var val = decodeURIComponent($2);
val = String(val);
obj[name] = val;
return rs;
});
return obj;
}
console.log(getQueryObject('https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=12306%E7%81%AB%E8%BD%A6%E7%A5%A8%E7%BD%91%E4%B8%8A%E8%AE%A2%E7%A5%A8%E5%AE%98%E7%BD%91'));
// Object {tn: "monline_3_dg", ie: "utf-8", wd: "12306火车票网上订票官网"}
3.将url查询参数手动解析成数据字典
function getQueryStringArgs(url){
url = url == null ? window.location.href : url;
var qs = url.substring(url.lastIndexOf("?") + 1);
var args = {};
var items = qs.length > 0 ? qs.split('&') : [];
var item = null;
var name = null;
var value = null;
for(var i=0; i<items.length; i++){
item = items[i].split("=");
//用decodeURIComponent()分别解码name 和value(因为查询字符串应该是被编码过的)。
name = decodeURIComponent(item[0]);
value = decodeURIComponent(item[1]); if(name.length){
args[name] = value;
}
} return args;
}
console.log(getQueryStringArgs('https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=12306%E7%81%AB%E8%BD%A6%E7%A5%A8%E7%BD%91%E4%B8%8A%E8%AE%A2%E7%A5%A8%E5%AE%98%E7%BD%91'));
// Object {tn: "monline_3_dg", ie: "utf-8", wd: "12306火车票网上订票官网"}
最新文章
- xp_sendmail: 由于邮件错误 0x80004005 而失败
- 原生js拖拽
- C#:时间转换
- Java和.NET使用DES对称加密的区别
- 【Spring】Spring系列6之Spring整合Hibernate
- JavaScript中创建类,赋值给ajax中的data参数
- ajax跳转页面问题
- xargs i I{} 参数说明
- Java中Animal b = new Dog();Dog c = new Dog();的区别
- 牛客国庆集训派对Day4.B.异或求和(按位统计)
- Spring Boot + Spring Cloud 构建微服务系统(五):熔断监控面板(Hystrix Dashboard)
- Celery入门指北
- 组件基础(参数校验和动态组件、v-once)—Vue学习笔记
- C编程基础
- .21-浅析webpack源码之事件流this-compilation
- C语言版——点亮LED灯,深入到栈
- web移动前端页面,jquery判断页面滑动方向
- SQL Server数据库定时备份解决方案
- Oracle Net Manager 服务命名配置以及用PL/SQL 登陆数据库
- codeblocks中cocos2dx项目添加新的.cpp和.h文件后编译运行的方法
热门文章
- rsync同步目录
- Solr4.2 新特性 DocValues [转]
- Hadoop是怎么分块Block的?
- C#使用MapReduce实现对分片数据的分组
- MyBatis #{} 和 ${} 引用值的用法
- JVM异常之:直接内存溢出
- Java学习——Applet画8个同心圆
- 网站首页多URL可访问,如何集中首页网站权重?
- [UE4]位移和形变 Render Transform
- [UE4]条件融合动画: Blend Posed by int