当前位置: 代码迷 >> Web前端 >> JQuery 失去Request url的参数(not plugin)
  详细解决方案

JQuery 失去Request url的参数(not plugin)

热度:300   发布时间:2012-11-22 00:16:41.0
JQuery 得到Request url的参数(not plugin)

今天看文章的时候,看到一篇文章,非常好,这里我也尝试了一下

?

JQuery 怎么得到request url中的参数呢?

?

其实很简单,就是循环遍历url,然后找到“&”这个符号

?

?

下面是源代码

?

?

// Read a page's GET URL variables and return them as an associative array.
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;
}

?

?

上面是得到URL的数组

?

我们打个比方

?

1.URL如下

?

?

http://www.example.com/?me=myValue&name2=SomeOtherValue
?

?

2.我们在浏览器中可以看到数组如下

?

?

{
    "me"    : "myValue",
    "name2" : "SomeOtherValue"
}
?

?

3.得到相应的参数的值

?

?

var first = getUrlVars()["me"];

// To get the second parameter
var second = getUrlVars()["name2"];
?

?

?

简单吧

?

下面JQuery的实现

?

?

$.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');

?

?

简简单单的,非常好用。。。希望大家顶起来

?

?

?

参考:http://jquery-howto.blogspot.jp/2009/09/get-url-parameters-values-with-jquery.html

1 楼 freezingsky 2012-10-11  
不错,这是客户端处理方式。之间都是在后台处理后,包装到前台,再通过JQuery来搞的。
2 楼 ffychina 2012-10-11  
要注意url的参数应该是一个数组而不是一个对象,如果是转换成对象,应该把相同的参数名用逗号隔开。以下是我copy别人的一个实现:
// 获取QueryString的数组
function getQueryString(){
  var result=location.search.match(new RegExp("[\?\&][^\?\&]+=[^\?\&]+","g"));
  if(result==null){
    return "";
  }
  for(var i=0;i<result.length;i++){
    result[i]=result[i].substring(1);
  }
  return result;
}
  相关解决方案