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 相关文章推荐
js获取单元格自定义属性值的代码(IE/Firefox)
Apr 05 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
Jun 29 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
Mar 16 Javascript
jquery获得页面元素的坐标值实现思路及代码
Apr 15 Javascript
JavaScript实现网页加载进度条代码超简单
Sep 21 Javascript
Javascript 动态改变imput type属性
Nov 01 Javascript
浅谈JavaScript的函数及作用域
Dec 30 Javascript
angularjs实现的购物金额计算工具示例
May 08 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
Nov 15 Javascript
VUE脚手架的下载和配置步骤详解
Apr 01 Javascript
JS正则表达式常见函数与用法小结
Apr 13 Javascript
Vue发布订阅模式实现过程图解
Apr 30 Javascript
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
获取远程文件大小的php函数
2010/01/11 PHP
php将会员数据导入到ucenter的代码
2010/07/18 PHP
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
用JS实现的一个include函数
2007/07/21 Javascript
一个简单的js动画效果代码
2010/07/20 Javascript
js中判断控件是否存在
2010/08/25 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
微信小程序button组件使用详解
2018/01/31 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
PyQt5每天必学之工具提示功能
2018/04/19 Python
numpy数组广播的机制
2019/07/12 Python
python如何实现DES加密
2020/09/21 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
英国标准协会商店:BSI Shop
2019/02/25 全球购物
J2EE包括哪些技术
2016/11/25 面试题
生物技术研究生自荐信
2013/11/12 职场文书
升学宴主持词
2014/04/02 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
python绘制箱型图
2021/04/27 Python
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android