【发布时间】:2012-09-25 11:28:41
【问题描述】:
在我的脚本中有一个简单的列表显示编辑链接
<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。
【问题讨论】:
-
vars.push(hash[0]); vars[hash[0]] = hash[1];- 为什么,你为什么要尝试像数组和对象一样处理vars? -
准确地说是@raina77ow - 我刚刚查看了一段尝试使用此功能的代码,我注意到了同样的事情。我想即使在 4 年后也会出现糟糕的代码;)
标签: javascript jquery