`

js获取url及起参数列表及扩展应用

 
阅读更多

在基于B/S的web开发中,我们时常会通过发请求给服务端,来完成所需要的功能。这时候,url就少不了,无参的,带参的,等等。所以在有的时候,我们就需要通过获取当前发送的url的参数,通过这些参数进而完成更多的功能,所以这篇文章我们就会谈到,在不借助其他工具的情况下,用我们的jquery来完成对当前请求的url的参数的获取。

在这里,我就列举出3类的获取参数的方法,其实质,当然,都是类似的。

第一种:1.引用外部js:<script type="text/javascript" src="js/jquery.query.js"></script>

2.设置js参数:<script type="text/javascript">

var jQuery.query={numbers:false,hash:true};

</script>

3.调用方法,获得参数:$.query.get(param1),$.query.get(param2),$.query.get(param3)......

第二种:1.引用外部js:<script type="text/javascript" src="js/jquery.query.js"></script>

2.编写脚本方法:<script type="text/javascript">

function GetQueryString(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>

3.调用方法,获得参数:GetQueryString("param1"),GetQueryString("param2"),GetQueryString("param3").....

第三种:1.引用外部js:<script type="text/javascript" src="js/jquery-1.4.2.js"></script>

2.编写脚本方法:<script type="text/javascript">

$.extend(

getUrlVars:function(){

var vars=[],hash;

var hashes=window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

for(vari = 0; i < hashes.length; i++)

{

hash = hashes[i].split('=');

vars.push(hash[0]);

vars[hash[0]] = hash[1];

}

return vars;

},

getUrlVar:function(name){

return $.getUrlVars()[name];

}

);

</script>

3.调用方法,获得参数:$.getUrlVars();$.getUrlVar('name');

由上述三种方式可以看出,我们会引用到jquery.query.js这个js文件,这个js里到底是提供了哪些方法呢,下面我们把它的代码贴出来:

Js代码
  1. /**
  2. *jQuery.query-QueryStringModificationandCreationforjQuery
  3. *WrittenbyBlairMitchelmore(blairDOTmitchelmoreATgmailDOTcom)
  4. *LicensedundertheWTFPL(http://sam.zoy.org/wtfpl/).
  5. *Date:2009/8/13
  6. *
  7. *@authorBlairMitchelmore
  8. *@version2.1.6
  9. *
  10. **/
  11. newfunction(settings){
  12. //VariousSettings
  13. var$separator=settings.separator||'&';
  14. var$spaces=settings.spaces===false?false:true;
  15. var$suffix=settings.suffix===false?'':'[]';
  16. var$prefix=settings.prefix===false?false:true;
  17. var$hash=$prefix?settings.hash===true?"#":"?":"";
  18. var$numbers=settings.numbers===false?false:true;
  19. jQuery.query=newfunction(){
  20. varis=function(o,t){
  21. returno!=undefined&&o!==null&&(!!t?o.constructor==t:true);
  22. };
  23. varparse=function(path){
  24. varm,rx=/\[([^[]*)\]/g,match=/^([^[]+?)(\[.*\])?$/.exec(path),base=match[1],tokens=[];
  25. while(m=rx.exec(match[2]))tokens.push(m[1]);
  26. return[base,tokens];
  27. };
  28. varset=function(target,tokens,value){
  29. varo,token=tokens.shift();
  30. if(typeoftarget!='object')target=null;
  31. if(token===""){
  32. if(!target)target=[];
  33. if(is(target,Array)){
  34. target.push(tokens.length==0?value:set(null,tokens.slice(0),value));
  35. }elseif(is(target,Object)){
  36. vari=0;
  37. while(target[i++]!=null);
  38. target[--i]=tokens.length==0?value:set(target[i],tokens.slice(0),value);
  39. }else{
  40. target=[];
  41. target.push(tokens.length==0?value:set(null,tokens.slice(0),value));
  42. }
  43. }elseif(token&&token.match(/^\s*[0-9]+\s*$/)){
  44. varindex=parseInt(token,10);
  45. if(!target)target=[];
  46. target[index]=tokens.length==0?value:set(target[index],tokens.slice(0),value);
  47. }elseif(token){
  48. varindex=token.replace(/^\s*|\s*$/g,"");
  49. if(!target)target={};
  50. if(is(target,Array)){
  51. vartemp={};
  52. for(vari=0;i<target.length;++i){
  53. temp[i]=target[i];
  54. }
  55. target=temp;
  56. }
  57. target[index]=tokens.length==0?value:set(target[index],tokens.slice(0),value);
  58. }else{
  59. returnvalue;
  60. }
  61. returntarget;
  62. };
  63. varqueryObject=function(a){
  64. varself=this;
  65. self.keys={};
  66. if(a.queryObject){
  67. jQuery.each(a.get(),function(key,val){
  68. self.SET(key,val);
  69. });
  70. }else{
  71. jQuery.each(arguments,function(){
  72. varq=""+this;
  73. q=q.replace(/^[?#]/,'');//removeanyleading?||#
  74. q=q.replace(/[;&]$/,'');//removeanytrailing&||;
  75. if($spaces)q=q.replace(/[+]/g,'');//replace+'swithspaces
  76. jQuery.each(q.split(/[&;]/),function(){
  77. varkey=decodeURIComponent(this.split('=')[0]||"");
  78. varval=decodeURIComponent(this.split('=')[1]||"");
  79. if(!key)return;
  80. if($numbers){
  81. if(/^[+-]?[0-9]+\.[0-9]*$/.test(val))//simplefloatregex
  82. val=parseFloat(val);
  83. elseif(/^[+-]?[0-9]+$/.test(val))//simpleintregex
  84. val=parseInt(val,10);
  85. }
  86. val=(!val&&val!==0)?true:val;
  87. if(val!==false&&val!==true&&typeofval!='number')
  88. val=val;
  89. self.SET(key,val);
  90. });
  91. });
  92. }
  93. returnself;
  94. };
  95. queryObject.prototype={
  96. queryObject:true,
  97. has:function(key,type){
  98. varvalue=this.get(key);
  99. returnis(value,type);
  100. },
  101. GET:function(key){
  102. if(!is(key))returnthis.keys;
  103. varparsed=parse(key),base=parsed[0],tokens=parsed[1];
  104. vartarget=this.keys[base];
  105. while(target!=null&&tokens.length!=0){
  106. target=target[tokens.shift()];
  107. }
  108. returntypeoftarget=='number'?target:target||"";
  109. },
  110. get:function(key){
  111. vartarget=this.GET(key);
  112. if(is(target,Object))
  113. returnjQuery.extend(true,{},target);
  114. elseif(is(target,Array))
  115. returntarget.slice(0);
  116. returntarget;
  117. },
  118. SET:function(key,val){
  119. varvalue=!is(val)?null:val;
  120. varparsed=parse(key),base=parsed[0],tokens=parsed[1];
  121. vartarget=this.keys[base];
  122. this.keys[base]=set(target,tokens.slice(0),value);
  123. returnthis;
  124. },
  125. set:function(key,val){
  126. returnthis.copy().SET(key,val);
  127. },
  128. REMOVE:function(key){
  129. returnthis.SET(key,null).COMPACT();
  130. },
  131. remove:function(key){
  132. returnthis.copy().REMOVE(key);
  133. },
  134. EMPTY:function(){
  135. varself=this;
  136. jQuery.each(self.keys,function(key,value){
  137. deleteself.keys[key];
  138. });
  139. returnself;
  140. },
  141. load:function(url){
  142. varhash=url.replace(/^.*?[#](.+?)(?:\?.+)?$/,"$1");
  143. varsearch=url.replace(/^.*?[?](.+?)(?:#.+)?$/,"$1");
  144. returnnewqueryObject(url.length==search.length?'':search,url.length==hash.length?'':hash);
  145. },
  146. empty:function(){
  147. returnthis.copy().EMPTY();
  148. },
  149. copy:function(){
  150. returnnewqueryObject(this);
  151. },
  152. COMPACT:function(){
  153. functionbuild(orig){
  154. varobj=typeoforig=="object"?is(orig,Array)?[]:{}:orig;
  155. if(typeoforig=='object'){
  156. functionadd(o,key,value){
  157. if(is(o,Array))
  158. o.push(value);
  159. else
  160. o[key]=value;
  161. }
  162. jQuery.each(orig,function(key,value){
  163. if(!is(value))returntrue;
  164. add(obj,key,build(value));
  165. });
  166. }
  167. returnobj;
  168. }
  169. this.keys=build(this.keys);
  170. returnthis;
  171. },
  172. compact:function(){
  173. returnthis.copy().COMPACT();
  174. },
  175. toString:function(){
  176. vari=0,queryString=[],chunks=[],self=this;
  177. varencode=function(str){
  178. str=str+"";
  179. if($spaces)str=str.replace(//g,"+");
  180. returnencodeURIComponent(str);
  181. };
  182. varaddFields=function(arr,key,value){
  183. if(!is(value)||value===false)return;
  184. varo=[encode(key)];
  185. if(value!==true){
  186. o.push("=");
  187. o.push(encode(value));
  188. }
  189. arr.push(o.join(""));
  190. };
  191. varbuild=function(obj,base){
  192. varnewKey=function(key){
  193. return!base||base==""?[key].join(""):[base,"[",key,"]"].join("");
  194. };
  195. jQuery.each(obj,function(key,value){
  196. if(typeofvalue=='object')
  197. build(value,newKey(key));
  198. else
  199. addFields(chunks,newKey(key),value);
  200. });
  201. };
  202. build(this.keys);
  203. if(chunks.length>0)queryString.push($hash);
  204. queryString.push(chunks.join($separator));
  205. returnqueryString.join("");
  206. }
  207. };
  208. returnnewqueryObject(location.search,location.hash);
  209. };
  210. }(jQuery.query||{});//PassinjQuery.queryassettingsobject

由源码我们可以看出,之前调用的它的东西,在源码中都有定义,如get()方法,load()方法,toString()方法等等。它里面提供了众多的扩展方法,这个就有待大家一起去研究使用。例如:

1. 想获取test,则在引入该js后,使用如下方式获取:var value=$.query.get('key');

2. 参数列表的名称相同,则可以这样,var arrValues=$.query.get("key"); arr=[value1,value2,value3....]

3. 参数列表的名称相同,想获取第二个参数,var value2=$.query.get("key[1]")

4. 设置参数,var newKey=$.query.set("name","zhangsan").toString(); newKey : "?name=zhangsan"

5. 设置两个参数,var newKeys=$.query.set("name","zhangsan").set("age",23).toString(); newKeys : "?name=zhangsan && age=23"

6. 删除一个参数:var deleteKey=$.query.REMOVE("sex");

7. 清空所有的参数:var emptyKey=$.query.empty();

8. 复制所有参数:var copyKeys=$.query.copy();

等等以上很多,更多的源自于对源码的研究和利用,这些就靠大家自己去琢磨了,实在没有你想要的,自己再这个基础上再添加自己的想要的代码也是可以的,该js的附件我也传上点击打开链接。希望这篇文章对大家有所帮助。

分享到:
评论

相关推荐

    如何用js获取当前url的参数值

    ### 如何用JavaScript获取当前URL的参数值 在Web开发中,经常需要处理URL中的查询参数,例如在页面跳转时传递数据、实现特定功能等。本文将详细介绍一种使用JavaScript来解析并获取当前URL参数的方法。 #### 方法...

    jquery_query_js获取url参数

    jQuery Query Object是jQuery的一个扩展插件,它提供了方便的方法来处理URL参数,使得开发者能够轻松地获取、设置和操作URL中的查询字符串。在本篇文章中,我们将深入探讨如何使用jQuery Query Object来获取URL参数...

    javascript 取Url参数和去掉字符串前后空格方法

    ### JavaScript 获取URL参数和去除字符串前后空格的方法 在日常的Web开发中,经常会遇到需要获取URL中的参数或处理字符串的情况。例如,在用户点击某个链接或者表单提交后,我们可能需要从URL中提取出某些特定的...

    在页面上取URL参数

    #### 使用JavaScript获取URL参数 为了能够有效地从URL中读取这些参数,开发者通常会编写专门的函数或利用现有的库来简化这一过程。其中一种方法就是使用JavaScript结合Prototype.js这样的库来实现。 #### ...

    js获取url参数的使用扩展实例

    通过上述分析可以看出,使用JavaScript获取URL参数是一种非常实用的技术,它可以帮助开发者更好地管理和利用URL中的信息,从而实现更加灵活和动态的网页功能。希望本文能为你的Web开发之路带来一定的帮助。

    javascript parseUrl函数(来自国外的获取网址url参数).docx

    - **网页应用**:从 URL 中提取查询参数,用于动态加载内容。 - **后端接口**:解析客户端请求的 URL,进行路由匹配。 - **数据分析**:提取 URL 中的特定信息,用于统计和分析用户行为。 #### 七、注意事项 - 在...

    PB调用 URL

    标题 "PB调用 URL" 涉及到的是在PowerBuilder (PB) 10.5版本中如何利用OLE(对象链接与嵌入)技术来调用URL,并传递参数。这是一个针对初学者的实例,旨在解释如何在PB环境中实现与Web服务或网页的交互。 在PB10.5...

    getURL:Chrome Chrome扩展程序,可从单击的链接中提取URL参数

    《getURL:Chrome扩展程序与JavaScript实现URL参数提取详解》 在互联网的海洋中,URL(统一资源定位符)是连接我们与各种网络资源的桥梁。URL不仅包含网站的地址,还可能携带额外的查询参数,这些参数在网页交互、...

    chrome扩展插件获取ajax请求记录

    总之,Chrome扩展插件获取Ajax请求记录是一项重要的Web开发技能,它可以帮助开发者优化应用性能,调试网络问题,提升开发效率。了解如何利用Chrome的内置工具和扩展插件进行网络请求分析是每个前端开发者不可或缺的...

    js中将URL中的参数提取出来作为对象的实现代码

    在JavaScript中,经常需要处理URL,特别是在Web应用中,我们可能需要从URL中获取查询参数以便进行各种操作。本文将详细解析如何通过JavaScript代码将URL中的参数提取出来并转化为一个对象。 首先,让我们分析给定的...

    js获取URL的参数的方法(getQueryString)示例

    在JavaScript中,获取URL参数是一项常见的任务,尤其是在开发Web应用时。`getQueryString`是一个实用的函数,用于从URL中提取指定的查询参数。本文将详细介绍`getQueryString`方法的原理、使用方式以及如何处理返回...

    获取URL地址中的文件名和参数的javascript代码

    本文将介绍如何使用JavaScript代码来获取URL地址中的文件名和参数,并且附带了详细的注释说明,便于理解和应用。 首先,我们来看一个用于获取页面文件名的JavaScript函数。这个函数名为`GetPageName`,它通过操作...

    获取浏览器URL

    在IT行业中,获取浏览器URL是一项基础且重要的任务,它涉及到网页应用、浏览器扩展以及网络编程等领域。这个任务通常由Web开发人员执行,以便获取当前页面的地址,进行数据交互、页面跳转或实现特定功能。这里我们将...

    js中url对象化管理分析.docx

    JS中的URL对象化管理是一种常见的编程实践,特别是在处理动态构建URL、解析和重组URL参数时。在Web开发中,URL(统一资源定位符)是链接到互联网上特定资源的关键,它包含了协议、主机名、路径、查询字符串等信息。...

    使用jquery获取url以及jquery获取url参数的实现方法

    在互联网应用开发中,获取当前页面的URL以及解析URL参数是前端开发人员必须掌握的基础技能。使用jQuery来实现这两个功能不仅可以让代码更加简洁,还能提高开发效率。本文将详细解读如何使用jQuery获取URL以及如何...

    JavaScript_ChromeFirefox浏览器扩展,用于显示反射查询参数的警报,显示当前路径的Wayback存档链接

    JavaScript是一种广泛应用于网页和网络应用的编程语言,尤其在浏览器端,它被用来为用户提供交互式的体验。在本项目中,我们关注的是一个专门针对Chrome和Firefox浏览器的扩展,其功能是显示反射查询参数的警报,并...

    JS request函数 用来获取url参数

    - **JS获取URL参数的使用扩展实例**:这篇文章提供了更多关于如何利用JavaScript获取URL参数的实践案例。 - **jQuery获取URL参数的插件**:介绍了如何使用jQuery简化URL参数的获取过程,提供了一些现成的插件供...

    Node.js解析ajax参数Demo

    **Node.js解析Ajax参数Demo** 在Web开发中,前端与后端的数据交互是必不可少的,Ajax(Asynchronous JavaScript and XML)技术就是实现这种交互的重要手段。在这个“Node.js解析Ajax参数Demo”中,我们将深入探讨...

    Ajax扩展包控件应用实例

    在控件中,这一过程通常被封装为一个函数,只需调用该函数并传入相应的参数,如URL、请求方法(GET或POST)、数据以及回调函数。 2. **数据传输格式**:虽然名字中含有XML,但Ajax传输的数据格式并不局限于XML,也...

    用javascript获取地址栏参数

    在JavaScript中,获取浏览器地址栏(URL)中的参数是一个常见的需求,这在处理网页交互、数据分析或者实现某些功能时非常有用。以下三个方法演示了如何使用JavaScript从URL中提取特定参数。 方法一: 这个方法首先...

Global site tag (gtag.js) - Google Analytics