【问题标题】:jQuery: How to get parameters of a url?jQuery:如何获取 url 的参数?
【发布时间】:2011-07-01 17:24:49
【问题描述】:

jQuery 新手,我无法获取服务器生成的 url 的参数。我有一个这样的网址:

<span class="popuptest"><a href="www.example.com/test?param1=1&param2=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

【问题讨论】:

  • @FelixKling 是的,但我认为这是一个比原始问题更好的问题,原始问题没有示例 URL 也没有代码。它如何获得如此多的支持是一个谜。
  • @Bill:你是对的......我只是在想,因为这里的一个答案只是引用了另一个问题,而另一个基本上是从接受的答案中复制了代码。

标签: jquery parameters get href param


【解决方案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;
          });
        });
        

        注意事项:

        1. $.getUrlVars in line - var second = $.getUrlVars()["param2"];
        2. 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&param2=&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');
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-07-16
                  相关资源
                  最近更新 更多