如何使用 JavaScript 和 jQuery 获取 URL 变量?
如何使用 JavaScript 和 jQuery 获取 URL 变量?
在我的脚本中,有一个简单的列表显示编辑链接。
我需要读取变量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”。
admin 更改状态以发布 2023年5月20日
你可以试试这个:
JavScript
function getUrlParams() { var params = {}; location.search.replace(/\?/g, '').split('&').forEach(function(item) { params[item.split('=')[0]] = item.split('=')[1]; }); return params; }
函数将返回这样一个对象:
{ firstName: 'Jordan', lastName: 'Belfort', position: 'The Wolf of Wall Street', }
用法
var urlParams = getUrlParams(); alert('Hello ' + urlParams.firstName + ' ' + urlParams.lastName);
注意:实际上不需要使用location.href并在“?”处拆分URL,因为我们可以使用location.search
获得整个查询字符串。
您尝试的方法不接受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); }); });
顺便说一下:您也可以修改第二个方法,两种方法都可以完成相同的工作。