jquery를 사용하여 URL을 가져오고 jquery를 사용하여 URL 매개변수를 가져오는 작업은 우리가 자주 사용하는 작업입니다. 다음은 이를 텍스트 설명 및 코드 분석 형식으로 분석한 것입니다.
1. jquery를 사용하여 URL을 얻는 것은 매우 간단합니다.
실제로는 javascript의 기본 window 객체만 사용하고 jquery의 지식은 사용하지 않습니다.
2. jquery로 URL 매개변수를 얻는 것은 더 복잡하고 정규식을 사용해야 하므로 자바스크립트 정규식을 잘 배우는 것이 중요합니다
먼저 자바스크립트를 통해 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의 값을 얻으려면 다음과 같이 작성할 수 있습니다.
URL 매개변수를 얻는 javascript의 방법을 이해합니다. 이 방법을 사용하여 jquery를 통해 url 매개변수를 얻는 jquery용 방법을 확장할 수 있습니다.
(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에 대해 이 메서드를 확장한 후 다음 메서드를 통해 특정 매개변수의 값을 얻을 수 있습니다.
전체 코드:
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