jQuery:如何获取url的参数?

jQuery的新手,我无法获取我的服务器生成的url参数。 我有这样的url:

find param 

我的jquery函数看起来像这样:

 $(function() { $('.popuptest a').live('click', function(event) { $.extend({ getUrlVars: function(){ var vars = [], hash; var hashes = this.href.slice(this.href.indexOf('?') + 1).split('&'); for(var i = 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]; } }); var second = getUrlVars()["param2"]; alert(second); return false; }); }); 

点击链接应该显示“2”,但我什么都没得到… jQuery noob的任何帮助? 提前致谢!

我在博客上发现了这个: http : //jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html

您不需要jQuery就可以使用纯JavaScript:

 function getParameterByName( name,href ) { name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regexS = "[\\?&]"+name+"=([^&#]*)"; var regex = new RegExp( regexS ); var results = regex.exec( href ); if( results == null ) return ""; else return decodeURIComponent(results[1].replace(/\+/g, " ")); } 

你可以用这种方式调用函数.. getParameterByName(param1,href of your link)

DEMO

小改进,只解析一次url,返回数组或params:

 function getURLParameters(url){ var result = {}; var searchIndex = url.indexOf("?"); if (searchIndex == -1 ) return result; var sPageURL = url.substring(searchIndex +1); var sURLVariables = sPageURL.split('&'); for (var i = 0; i < sURLVariables.length; i++) { var sParameterName = sURLVariables[i].split('='); result[sParameterName[0]] = sParameterName[1]; } return result; } 

http://jsfiddle.net/shakhal/gXM3u/

这很简单,你所要做的就是把你想要的变量名从URL放到这个函数中然后它会返回你的URL变量的值

 function getParameterByName(name) { return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null; } 
 function getURLParameter(name) { return decodeURI( (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1] ); } 

你的jquery可能是

 $(function() { $('.popuptest a').live('click', function(event) { $.extend({ getUrlVars: function(){ var vars = [], hash; var hashes = $('.popuptest a').attr("href").slice($('.popuptest a').attr("href").indexOf('?') + 1).split('&'); for(var i = 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]; } }); var second = $.getUrlVars()["param2"]; alert(second); return false; }); }); 

注意事项:

  1. $ .getUrlVars in line - var second = $ .getUrlVars()[“param2”];
  2. this.href被替换为$('。popuptest a')。attr(“href”)

从这里

 $.urlParam = function(name){ var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); return results[1] || 0; } // example.com?param1=name&param2=&id=6 $.urlParam('param1'); // name $.urlParam('id'); // 6 $.urlParam('param2'); // null 

使用下面的代码一段时间,但最近发现URL中的base64_encode字符串有问题,最后有==,如:/index.php?a = 1&b = 2&c = MW =&d = 4。

使用getUrlVar(“c”)给我’Mw’作为结果,但这应该是’Mw ==’,所以添加了一个额外的行:

  $.extend({ getUrlVars: function(){ var vars = [], hash; var hashes = $('.popuptest a').attr("href").slice($('.popuptest a').attr("href").indexOf('?') + 1).split('&'); for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); if (hash.length > 2) hash[1] = hash.slice(1).join('='); vars[hash[0]] = hash[1]; } return vars; }, getUrlVar: function(name){ return $.getUrlVars()[name]; } });