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火车票网上订票官网"}

最新文章

  1. xp_sendmail: 由于邮件错误 0x80004005 而失败
  2. 原生js拖拽
  3. C#:时间转换
  4. Java和.NET使用DES对称加密的区别
  5. 【Spring】Spring系列6之Spring整合Hibernate
  6. JavaScript中创建类,赋值给ajax中的data参数
  7. ajax跳转页面问题
  8. xargs i I{} 参数说明
  9. Java中Animal b = new Dog();Dog c = new Dog();的区别
  10. 牛客国庆集训派对Day4.B.异或求和(按位统计)
  11. Spring Boot + Spring Cloud 构建微服务系统(五):熔断监控面板(Hystrix Dashboard)
  12. Celery入门指北
  13. 组件基础(参数校验和动态组件、v-once)—Vue学习笔记
  14. C编程基础
  15. .21-浅析webpack源码之事件流this-compilation
  16. C语言版——点亮LED灯,深入到栈
  17. web移动前端页面,jquery判断页面滑动方向
  18. SQL Server数据库定时备份解决方案
  19. Oracle Net Manager 服务命名配置以及用PL/SQL 登陆数据库
  20. codeblocks中cocos2dx项目添加新的.cpp和.h文件后编译运行的方法

热门文章

  1. rsync同步目录
  2. Solr4.2 新特性 DocValues [转]
  3. Hadoop是怎么分块Block的?
  4. C#使用MapReduce实现对分片数据的分组
  5. MyBatis #{} 和 ${} 引用值的用法
  6. JVM异常之:直接内存溢出
  7. Java学习——Applet画8个同心圆
  8. 网站首页多URL可访问,如何集中首页网站权重?
  9. [UE4]位移和形变 Render Transform
  10. [UE4]条件融合动画: Blend Posed by int