【问题标题】:How to use javascript or jquery to retrieve parameters from the url?如何使用 javascript 或 jquery 从 url 中检索参数?
【发布时间】:2010-07-22 18:51:13
【问题描述】:

我有一个如下所示的网址:http://www.my-site.com/#key=kj123asj。我想使用 javascript 检索 key

感谢任何帮助。

【问题讨论】:

    标签: javascript jquery url


    【解决方案1】:

    似乎每个人都在向您指出引用查询字符串的代码。

    假设您的参数位于片段中,而不是您给出的示例中的查询字符串中,您可以使用 window.location.hash 属性来访问它们,而无需自己解析整个 URL。

    从那里您可以使用类似于其他人提到的代码。像这样的简单循环就可以了。

     var values = {},
      pairs = window.location.hash.substring(1).split('&'),
      pair;
     for (var i = 0, len = pairs.length; i < len; i++) {
      pair = pairs[i].split('=');
      values[pair[0]] = pair[1];
     }
     alert(values['key']);
    

    【讨论】:

      【解决方案2】:

      这个JavaScript库可以解析standard format中的查询字符串,也就是说:

      http://www.my-site.com/?key=kj123asj
      

      获取key 的代码是:

      var qs = new Querystring();
      var key = qs.get("key");
      

      【讨论】:

        【解决方案3】:
        $.extend({
          getUrlVars: function(){
            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;
          },
          getUrlVar: function(name){
            return $.getUrlVars()[name];
          }
        });
        
        // Get object of URL parameters
        var allVars = $.getUrlVars();
        
        // Getting URL var by its nam
        var byName = $.getUrlVar('name');
        

        【讨论】:

          【解决方案4】:
          var matches = location.href.match(/(key=)([a-z0-9]+)$/i);
          

          变量matches 将是一个数组,matches[2] 将包含键的值。

          【讨论】:

            【解决方案5】:

            您可以通过变量 window.location.href 访问整个 URL。之后,只需在字符串中搜索#= 字符并提取其后的数据即可。例如:

            var s = window.location.href;
            var i = s.indexOf('=');
            var value = s.substr(i+1);
            

            当然,这只会为您获取第一个值,并且仅在您只有一个要提取的值时才有效。 但是,您可以将该值设为 JSON 编码的对象,如下所示:

            http://www.somewebsite.com/#data={key: 1293, foo: "bar"}
            

            然后,做:

            var map = JSON.parse(value);
            

            您现在可以使用普通的 JavaScript 技术来访问这些项目:

            var key = map['key'] // 1293
            var foo = map['foo'] // "bar"
            

            这至少应该让你开始。

            【讨论】:

              【解决方案6】:
              猜你喜欢
              • 1970-01-01
              • 2014-07-16
              • 1970-01-01
              • 2016-03-07
              • 2011-07-23
              相关资源
              最近更新 更多