在我的脚本中有一个简单的列表显示了用于编辑的链接
<ul>
<li><a href="edit.php?id=5" class="edit">click here</a></li>
<li><a href="edit.php?id=5" class="edit">click here</a></li>
<li><a href="edit.php?id=5" class="edit">click here</a></li>
<li><a href="edit.php?id=5" class="edit">click here</a></li>
</ul>
我需要的是读取变量 id,以便我可以通过 .ajax 调用发送它,我尝试了这个函数
$(document).ready(function(){
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.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;
}
$('.edit').click(function(){
var test = getUrlVars()["id"];
alert(test);
});
});
当我单击链接时,警告消息显示 undefined
。
我尝试了另一个功能:
$(document).ready(function(){
var urlParams = {};
(function () {
var match,
pl = /\+/g, // Regex for replacing addition symbol with a space
search = /([^&=]+)=?([^&]*)/g,
decode = function(s) {
return decodeURIComponent(s.replace(pl, " "));
},
query = window.location.search.substring(1);
while (match = search.exec(query))
urlParams[decode(match[1])] = decode(match[2]);
})();
$('.edit').click(function(){
var test = urlParams["id"];
alert(test);
});
});
...但即使这样也会显示警告消息 undefined
。
最佳答案
您尝试的方法没有将 URL 作为参数,而是解析当前的 URL 参数(即您兄弟中的 URL)。只需像这样修改第一个方法即可使其工作:
$(function() {
function getUrlVars(url) {
var vars = [], hash;
var hashes = url.slice(url.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;
}
$('.edit').click(function() {
var href = $(this).attr("href");
var test = getUrlVars(href)["id"];
alert(test);
});
});
旁注:您还可以修改第二个,它们都做同样的工作。
关于javascript - 使用 javascript 和 Jquery 检索 url 变量的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12727081/