jQuery:如何获取 url 的参数?
Posted
技术标签:
【中文标题】jQuery:如何获取 url 的参数?【英文标题】:jQuery: How to get parameters of a url? 【发布时间】:2011-07-01 17:24:49 【问题描述】:jQuery 新手,我无法获取服务器生成的 url 的参数。我有一个这样的网址:
<span class="popuptest"><a href="www.example.com/test?param1=1¶m2=2">find param</a></span>
我的 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
【问题讨论】:
Get query string values in javascript的可能重复 @FelixKling 是的,但我认为这是一个比原始问题更好的问题,原始问题没有示例 URL 也没有代码。它如何获得如此多的支持是一个谜。 @Bill:你是对的......我只是在想,因为这里的一个答案只是引用了另一个问题,而另一个基本上是从接受的答案中复制了代码。 【参考方案1】:你不需要 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
【讨论】:
当然你不需要jQuery。你认为 jQuery 是如何工作的?它使用 JavaScript。 jQuery 的重点是方便。【参考方案2】:小改进,只解析一次url,返回数组或参数:
function getURLParameters(url)
var result = ;
var hashIndex = url.indexOf("#");
if (hashIndex > 0)
url = url.substr(0, hashIndex);
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/
【讨论】:
【参考方案3】:很简单,你只需将你想要的变量名从 URL 中输入到这个函数中,它就会返回 URL 变量的值
function getParameterByName(name)
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null;
【讨论】:
【参考方案4】:function getURLParameter(name)
return decodeURI(
(RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
);
【讨论】:
【参考方案5】:你的 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;
);
);
注意事项:
-
$.getUrlVars in line - var second = $.getUrlVars()["param2"];
this.href 被替换为 $('.popuptest a').attr("href")
【讨论】:
【参考方案6】:来自here
$.urlParam = function(name)
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
return results[1] || 0;
// example.com?param1=name¶m2=&id=6
$.urlParam('param1'); // name
$.urlParam('id'); // 6
$.urlParam('param2'); // null
【讨论】:
【参考方案7】:如此简单,您可以使用任何 url 并在 Javascript 中获取值。这是完整的代码集
<!DOCTYPE html>
<html>
<head>
<script>
var tech = getQueryVariable('filename');
function getQueryVariable(variable)
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++)
var pair = vars[i].split("=");
if(pair[0] == variable)return pair[1];
return(false);
alert(tech);
</script>
</head>
<body>
<p>Get parameters of a url</p>
</body>
</html>
【讨论】:
【参考方案8】:使用下面的代码一段时间,但最近发现 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];
);
【讨论】:
【参考方案9】:Jquery 具有获取参数表单 URL 的构建函数。
var url="http://example.com/?id=76dc915c-b1c2-47f6-ae63-a3ea6ce78f2a";
let searchParams = new URLSearchParams(window.location.search)
Does sent exist?
searchParams.has('id') // true
Is it equal to "yes"?
let param = searchParams.get('id');
【讨论】:
以上是关于jQuery:如何获取 url 的参数?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jQuery 或纯 JavaScript 获取 URL 参数?