jQuery:如何获取url的参数?

the*_*eld 18 parameters jquery get param href

jQuery的新手,我在获取服务器生成的url参数时遇到问题.我有这样的网址:

<span class="popuptest"><a href="www.example.com/test?param1=1&param2=2">find param</a></span>
Run Code Online (Sandbox Code Playgroud)

我的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;
  });
});
Run Code Online (Sandbox Code Playgroud)

点击链接应该显示"2",但我什么都没得到... jQuery noob的任何帮助?提前致谢!

我在博客上发现了这个:http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html

Viv*_*vek 17

您不需要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, " "));
}
Run Code Online (Sandbox Code Playgroud)

你可以用这种方式调用这个函数..getParameterByName(param1,href of your link)

DEMO

  • 当然你不需要jQuery.你觉得jQuery如何运作?它使用JavaScript.jQuery的重点是方便. (8认同)

sha*_*hak 12

小改进,只解析一次url,返回数组或params:

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;
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/shakhal/gXM3u/


小智 7

这很简单,你所要做的就是把你想要的变量名从URL中放到这个函数中然后它会返回你的URL变量的值

function getParameterByName(name) {
 return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null;
}
Run Code Online (Sandbox Code Playgroud)