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打印指定区域Html页面并自动分页
Jul 04 Javascript
javascript属性访问表达式用法分析
Apr 25 Javascript
jQuery选择器及jquery案例详解(必看)
May 20 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
Jun 15 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
Aug 23 Javascript
Vue 进入/离开动画效果
Dec 26 Javascript
js删除数组中某几项的方法总结
Jan 16 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
Sep 06 Javascript
vue v-for直接循环数字实例
Nov 07 Javascript
vue使用原生swiper代码实例
Feb 05 Javascript
jQuery实现的解析本地 XML 文档操作示例
Apr 30 jQuery
js实现鼠标拖曳效果
Dec 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维护文件系统
2006/10/09 PHP
PHP面向对象详解(三)
2015/12/07 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
20个非常棒的 jQuery 幻灯片插件和教程分享
2011/08/23 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
JS字符串截取函数实例
2013/12/27 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
DWR中各种java方法的调用
2016/05/04 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
vue集成kindeditor富文本的实现示例代码
2019/06/07 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
为Python程序添加图形化界面的教程
2015/04/29 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
Python中psutil的介绍与用法
2019/05/02 Python
selenium+python环境配置教程详解
2019/05/28 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
青年文明号口号
2014/06/17 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
入队仪式主持词
2015/07/04 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
Nginx内网单机反向代理的实现
2021/11/07 Servers