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 EasyUI 使用介绍
Apr 01 Javascript
使用jquery动态加载js文件的方法
Dec 24 Javascript
AngularJS ng-controller 指令简单实例
Aug 01 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
Nov 09 Javascript
Bootstrap源码解读下拉菜单(4)
Dec 23 Javascript
vue-cli实现多页面多路由的示例代码
Jan 30 Javascript
jQuery实现炫丽的3d旋转星空效果
Jul 04 jQuery
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
Aug 29 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
Jan 24 Javascript
React 使用Hooks简化受控组件的状态绑定
Mar 18 Javascript
小程序如何定位所在城市及发起周边搜索
Feb 11 Javascript
vue如何使用模拟的json数据查看效果
Mar 31 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
php结合ajax实现赞、顶、踩功能实例
2014/05/12 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
关于JS解构的5种有趣用法
2019/09/05 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
python实现RSA加密(解密)算法
2016/02/17 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
python学生信息管理系统(初级版)
2018/10/17 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
详解Python3中的 input() 函数
2020/03/18 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
会计专业职业规划:规划自我赢取未来
2014/02/12 职场文书
十一酒店活动方案
2014/02/20 职场文书
大学生暑期实践感言
2014/02/26 职场文书
授权委托书范本
2014/04/03 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
2014年护理部工作总结
2014/11/14 职场文书
国富论读书笔记
2015/06/26 职场文书
SpringBoot快速入门详解
2021/07/21 Java/Android
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA