如何使用 JavaScript 和 jQuery 获取 URL 变量?

17 浏览
0 Comments

如何使用 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日
0
0 Comments

你可以试试这个:

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获得整个查询字符串。

0
0 Comments

您尝试的方法不接受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);
    });
});

顺便说一下:您也可以修改第二个方法,两种方法都可以完成相同的工作。

0