jquery获取url参数及url加参数的方法


Posted in Javascript onOctober 26, 2015

使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作,下面通过文字说明加代码分析的形式给大家解析,具体详情请看下文。

1、jquery获取url很简单,代码如下:

window.location.href;

其实只是用到了javascript的基础的window对象,并没有用jquery的知识。

2、jquery获取url参数比较复杂,要用到正则表达式,所以学好javascript正则式多么重要的事情

首先看看单纯的通过javascript是如何来获取url中的某个参数:

//获取url中的参数
  function getUrlParam(name) {
   var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
   var r = window.location.search.substr(1).match(reg); //匹配目标参数
   if (r != null) return unescape(r[2]); return null; //返回参数值
  }

通过这个函数传递url中的参数名就可以获取到参数的值,比如url为

http://localhost:33064/WebForm2.aspx?reurl=WebForm1.aspx

我们要获取reurl的值,可以这样写:

var xx = getUrlParam('reurl');

明白了javascript获取url参数的方法,我们可以通过这个方法为jquery扩展一个方法来通过jquery获取url参数,下面的代码为jquery扩展了一个getUrlParam()方法

(function ($) {
    $.getUrlParam = function (name) {
     var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
     var r = window.location.search.substr(1).match(reg);
     if (r != null) return unescape(r[2]); return null;
    }
   })(jQuery);

为jquery扩展了这个方法了之后我们就可以通过如下方法来获取某个参数的值了:

  

 var xx = $.getUrlParam('reurl');

完整代码:

<script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
 <script type="text/javascript">
  $(function () {
   //方法二:
   (function ($) {
    $.getUrlParam = function (name) {
     var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
     var r = window.location.search.substr(1).match(reg);
     if (r != null) return unescape(r[2]); return null;
    }
   })(jQuery);
   //方法二:
   var xx = $.getUrlParam('reurl');
   //方法一:
   // var xx = getUrlParam('reurl');

   alert(xx);
  });
  //方法一:
  //获取url中的参数
  function getUrlParam(name) {
   var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
   var r = window.location.search.substr(1).match(reg); //匹配目标参数
   if (r != null) return unescape(r[2]); return null; //返回参数值
  }
 </script>

2014-4-23 修改

今天在用上面的方法获取url中的参数时,url中传递的中文参数在解析的时候无论怎么测试,获取的都是乱码。经过一番调试后发现,我再传递参数时,对汉字编码使用的是 encodeURI ,而上面的方法在解析参数编码时使用的是unescape ,修改为 decodeURI 就可以了。

附: W3School中的介绍:

JavaScript unescape() 函数

unescape() 函数可对通过 escape() 编码的字符串进行解码。

参数 描述
string 必需。要解码或反转义的字符串。

说明

该函数的工作原理是这样的:通过找到形式为 %xx 和 %uxxxx 的字符序列(x 表示十六进制的数字),用 Unicode 字符 \u00xx 和 \uxxxx 替换这样的字符序列进行解码。

提示和注释

注释:ECMAScript v3 已从标准中删除了 unescape() 函数,并反对使用它,因此应该用 decodeURI() 和 decodeURIComponent() 取而代之。

综上: javascript对参数编码解码方法要一致:

escape()   unescape()

encodeURI()   decodeURI()

encodeURIComponent()    decodeURIComponent() 

网上找的另一种javascript获取url中参数的方法:

<script language="JavaScript" type="text/javascript"> 
function GetUrlParms() 
{
 var args=new Object(); 
 var query=location.search.substring(1);//获取查询串 
 var pairs=query.split("&");//在逗号处断开 
 for(var i=0;i<pairs.length;i++) 
 { 
  var pos=pairs[i].indexOf('=');//查找name=value 
   if(pos==-1) continue;//如果没有找到就跳过 
   var argname=pairs[i].substring(0,pos);//提取name 
   var value=pairs[i].substring(pos+1);//提取value 
   args[argname]=unescape(value);//存为属性 
 }
 return args;
}
var args = new Object();
args = GetUrlParms();
//如果要查找参数key:
if(args["id"]!=undefined)
{
//如果要查找参数key:
var value1 = args["id"] ;
alert(value1);
}</script>

 jquery 取url参数和在url加参数

(function ($) {
 $.extend({
  Request: function (m) {
   var sValue = location.search.match(new RegExp("[\?\&]" + m + "=([^\&]*)(\&?)", "i"));
   return sValue ? sValue[1] : sValue;
  },
  UrlUpdateParams: function (url, name, value) {
   var r = url;
   if (r != null && r != 'undefined' && r != "") {
    value = encodeURIComponent(value);
    var reg = new RegExp("(^|)" + name + "=([^&]*)(|$)");
    var tmp = name + "=" + value;
    if (url.match(reg) != null) {
     r = url.replace(eval(reg), tmp);
    }
    else {
     if (url.match("[\?]")) {
      r = url + "&" + tmp;
     } else {
      r = url + "?" + tmp;
     }
    }
   }
   return r;
  }

 });
})(jQuery);

使用方法

dev.zhang.com/IOF.Signup/index_uscn_chs.html?act=1

1、取值使用

$.Request("act") = 1

2、url加参数

$.UrlUpdateParams(window.location.href, "mid", 11111),

结果window.location.href?mid=11111

Javascript 相关文章推荐
基于jquery跨浏览器显示的file上传控件
Oct 24 Javascript
javascript框架设计读书笔记之数组的扩展与修复
Dec 02 Javascript
在JavaScript中如何解决用execCommand(
Oct 19 Javascript
学习JavaScript设计模式之策略模式
Jan 12 Javascript
微信小程序 参数传递详解
Oct 24 Javascript
JavaScript 最佳实践:帮你提升代码质量
Dec 03 Javascript
jQuery Easyui 下拉树组件combotree
Dec 16 Javascript
jQuery Tree Multiselect使用详解
May 02 jQuery
浅谈Node异步编程的机制
Oct 18 Javascript
Vue组件之自定义事件的功能图解
Feb 01 Javascript
cdn模式下vue的基本用法详解
Oct 07 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
Apr 08 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
Oct 26 #Javascript
angular.bind使用心得
Oct 26 #Javascript
详解JavaScript编程中正则表达式的使用
Oct 25 #Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
Oct 25 #Javascript
JavaScript编程中布尔对象的基本使用
Oct 25 #Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
Oct 25 #Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
Oct 25 #Javascript
You might like
坏狼的PHP学习教程之第2天
2008/06/15 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
javascript 操作符(~、&amp;、|、^、)使用案例
2014/12/31 Javascript
jQuery制作可自定义大小的拼图游戏
2015/03/30 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
英国独特家具和家庭用品购物网站:Cuckooland
2020/08/30 全球购物
在校生党员自我评价
2013/09/25 职场文书
初中三年学生的学习自我评价
2013/11/13 职场文书
英语感恩演讲稿
2014/01/14 职场文书
运动会入场式解说词
2014/02/18 职场文书
司法助理专业自荐书
2014/06/13 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
个人剖析材料范文
2014/09/30 职场文书
学术会议开幕词
2016/03/03 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
mysql自增长id用完了该怎么办
2022/02/12 MySQL
Python列表的索引与切片
2022/04/07 Python
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技