JavaScript获取URL中参数querystring的方法详解


Posted in Javascript onOctober 11, 2016

一. 获取url的querystring参数

获取url的querystring参数的两种方法如下:

1.1 方法一:正则匹配

//获取url中的参数
function getQueryString(name) {
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", i); // 匹配目标参数
  var result = window.location.search.substr(1).match(reg); // 对querystring匹配目标参数
  if (result != null) {
    return decodeURIComponent(result[2]);
  } else {
    return null;
  }
}

对于 http://localhost/index.html?q1=abc&q2=efg&q3=h 的url,获取 q1 参数值的方法如下:

var q1 = getQueryString('q1'); // abc

1.2 方法二:split

function getQueryString() {  
  var qs = location.search.substr(1), // 获取url中"?"符后的字串  
    args = {}, // 保存参数数据的对象
    items = qs.length ? qs.split("&") : [], // 取得每一个参数项,
    item = null,
    len = items.length;

  for(var i = 0; i < len; i++) {
    item = items[i].split("=");
    var name = decodeURIComponent(item[0]),
      value = decodeURIComponent(item[1]);
    if(name) {
      args[name] = value;
    }
  }
  return args;
}

对于 http://localhost/index.html?q1=abc&q2=efg&q3=h 的url,获取 q1 参数值的方法如下:

var qs = getQueryString(); 

var q1 = qs["q1"]; // abc

用上面两种getQueryString()方法都能很好地解决获取url的querystring参数问题。就此顺便整理一下Location对象,方便日后学习参考。

二. Location对象的属性

备注:以 http://localhost:80/dir/index.html?q1=abc&q2=efg&q3=h#anchor 为例:

JavaScript获取URL中参数querystring的方法详解

location的这8个属性都是可读写的。

其中,改变location.href会跳转到新的URL页面,而修改location.hash会跳到当前页面中锚点位置。

每次修改window.location的属性(hash除外),页面都会以新的URL重新加载,并在浏览器的历史纪录中生成一条新纪录。

三. Location对象的方法

JavaScript获取URL中参数querystring的方法详解

其中,location.assign(url) 的效果跟下列两行代码的效果完全一样:

window.location = url;
location.href = url;

位于 location.reload() 调用之后的代码可能会也可能不会执行,这取决于网络延迟或系统资源等因素。因此,最好将 location.reload() 放在代码的最后一行。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能有所帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
Jquery实现自定义窗口随意的拖拽
Mar 12 Javascript
jQuery的animate函数实现图文切换动画效果
May 03 Javascript
JS判断页面是否出现滚动条的方法
Jul 17 Javascript
深入学习JavaScript中的原型prototype
Aug 13 Javascript
jquery实现多条件筛选特效代码分享
Aug 28 Javascript
AngularJS实现表单手动验证和表单自动验证
Dec 09 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
Jul 14 Javascript
jquery与js实现全选功能的区别
Jun 11 jQuery
JS中实现隐藏部分姓名或者电话号码的代码
Jul 17 Javascript
微信小程序实现锚点功能
Nov 20 Javascript
vue实现路由懒加载的3种方法示例
Sep 01 Javascript
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
May 25 Vue.js
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
Oct 11 #Javascript
Node.js的环境安装配置(使用nvm方式)
Oct 11 #Javascript
javascript 动态样式添加的简单实现
Oct 11 #Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 #Javascript
javascript 动态脚本添加的简单方法
Oct 11 #Javascript
js HTML5上传示例代码完整版
Oct 10 #Javascript
JavaScript  event对象整理及详细介绍
Oct 10 #Javascript
You might like
基于mysql的bbs设计(一)
2006/10/09 PHP
php类中private属性继承问题分析
2012/11/01 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
php无限级分类实现方法分析
2016/10/19 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
javascript string字符串优化问题
2011/07/31 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
python读取excel指定列数据并写入到新的excel方法
2018/07/10 Python
python实现多进程代码示例
2018/10/31 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
python使用scapy模块实现ping扫描的过程详解
2021/01/21 Python
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
环境工程求职简历的自我评价范文
2013/10/24 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
毕业大学生自荐信
2014/06/17 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
社区节水倡议书
2015/04/29 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
HTML通过表单实现酒店筛选功能
2021/05/18 HTML / CSS
Golang获取List列表元素的四种方式
2022/04/20 Golang
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android