js/jquery 获取url参数

js代码:



function GetQueryString(name) 

{ 

var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); 

var r = window.location.search.substr(1).match(reg); 

if (r!=null) return unescape(r[2]); return null; 

}  



URL的参数&参数名1=XXXX&参数名2=XXXX&参数名3=XXXX  



alert(GetQueryString("参数名1")); 

alert(GetQueryString("参数名2")); 

alert(GetQueryString("参数名3"));


jquery 代码:

把下面代码。放到js文件中

/**

 * jQuery.query - Query String Modification and Creation for jQuery

 * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)

 * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).

 * Date: 2009/8/13

 *

 * @author Blair Mitchelmore

 * @version 2.1.6

 *

 **/

new function(settings) { 

  // Various Settings

  var $separator = settings.separator || '&';

  var $spaces = settings.spaces === false ? false : true;

  var $suffix = settings.suffix === false ? '' : '[]';

  var $prefix = settings.prefix === false ? false : true;

  var $hash = $prefix ? settings.hash === true ? "#" : "?" : "";

  var $numbers = settings.numbers === false ? false : true;

  

  jQuery.query = new function() {

    var is = function(o, t) {

      return o != undefined && o !== null && (!!t ? o.constructor == t : true);

    };

    var parse = function(path) {

      var m, rx = /\[([^[]*)\]/g, match = /^([^[]+?)(\[.*\])?$/.exec(path), base = match[1], tokens = [];

      while (m = rx.exec(match[2])) tokens.push(m[1]);

      return [base, tokens];

    };

    var set = function(target, tokens, value) {

      var o, token = tokens.shift();

      if (typeof target != 'object') target = null;

      if (token === "") {

        if (!target) target = [];

        if (is(target, Array)) {

          target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));

        } else if (is(target, Object)) {

          var i = 0;

          while (target[i++] != null);

          target[--i] = tokens.length == 0 ? value : set(target[i], tokens.slice(0), value);

        } else {

          target = [];

          target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));

        }

      } else if (token && token.match(/^\s*[0-9]+\s*$/)) {

        var index = parseInt(token, 10);

        if (!target) target = [];

        target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);

      } else if (token) {

        var index = token.replace(/^\s*|\s*$/g, "");

        if (!target) target = {};

        if (is(target, Array)) {

          var temp = {};

          for (var i = 0; i < target.length; ++i) {

            temp[i] = target[i];

          }

          target = temp;

        }

        target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);

      } else {

        return value;

      }

      return target;

    };

    

    var queryObject = function(a) {

      var self = this;

      self.keys = {};

      

      if (a.queryObject) {

        jQuery.each(a.get(), function(key, val) {

          self.SET(key, val);

        });

      } else {

        jQuery.each(arguments, function() {

          var q = "" + this;

          q = q.replace(/^[?#]/,''); // remove any leading ? || #

          q = q.replace(/[;&]$/,''); // remove any trailing & || ;

          if ($spaces) q = q.replace(/[+]/g,' '); // replace +'s with spaces

          

          jQuery.each(q.split(/[&;]/), function(){

            var key = decodeURIComponent(this.split('=')[0] || "");

            var val = decodeURIComponent(this.split('=')[1] || "");

            

            if (!key) return;

            

            if ($numbers) {

              if (/^[+-]?[0-9]+\.[0-9]*$/.test(val)) // simple float regex

                val = parseFloat(val);

              else if (/^[+-]?[0-9]+$/.test(val)) // simple int regex

                val = parseInt(val, 10);

            }

            

            val = (!val && val !== 0) ? true : val;

            

            if (val !== false && val !== true && typeof val != 'number')

              val = val;

            

            self.SET(key, val);

          });

        });

      }

      return self;

    };

    

    queryObject.prototype = {

      queryObject: true,

      has: function(key, type) {

        var value = this.get(key);

        return is(value, type);

      },

      GET: function(key) {

        if (!is(key)) return this.keys;

        var parsed = parse(key), base = parsed[0], tokens = parsed[1];

        var target = this.keys[base];

        while (target != null && tokens.length != 0) {

          target = target[tokens.shift()];

        }

        return typeof target == 'number' ? target : target || "";

      },

      get: function(key) {

        var target = this.GET(key);

        if (is(target, Object))

          return jQuery.extend(true, {}, target);

        else if (is(target, Array))

          return target.slice(0);

        return target;

      },

      SET: function(key, val) {

        var value = !is(val) ? null : val;

        var parsed = parse(key), base = parsed[0], tokens = parsed[1];

        var target = this.keys[base];

        this.keys[base] = set(target, tokens.slice(0), value);

        return this;

      },

      set: function(key, val) {

        return this.copy().SET(key, val);

      },

      REMOVE: function(key) {

        return this.SET(key, null).COMPACT();

      },

      remove: function(key) {

        return this.copy().REMOVE(key);

      },

      EMPTY: function() {

        var self = this;

        jQuery.each(self.keys, function(key, value) {

          delete self.keys[key];

        });

        return self;

      },

      load: function(url) {

        var hash = url.replace(/^.*?[#](.+?)(?:\?.+)?$/, "$1");

        var search = url.replace(/^.*?[?](.+?)(?:#.+)?$/, "$1");

        return new queryObject(url.length == search.length ? '' : search, url.length == hash.length ? '' : hash);

      },

      empty: function() {

        return this.copy().EMPTY();

      },

      copy: function() {

        return new queryObject(this);

      },

      COMPACT: function() {

        function build(orig) {

          var obj = typeof orig == "object" ? is(orig, Array) ? [] : {} : orig;

          if (typeof orig == 'object') {

            function add(o, key, value) {

              if (is(o, Array))

                o.push(value);

              else

                o[key] = value;

            }

            jQuery.each(orig, function(key, value) {

              if (!is(value)) return true;

              add(obj, key, build(value));

            });

          }

          return obj;

        }

        this.keys = build(this.keys);

        return this;

      },

      compact: function() {

        return this.copy().COMPACT();

      },

      toString: function() {

        var i = 0, queryString = [], chunks = [], self = this;

        var encode = function(str) {

          str = str + "";

          if ($spaces) str = str.replace(/ /g, "+");

          return encodeURIComponent(str);

        };

        var addFields = function(arr, key, value) {

          if (!is(value) || value === false) return;

          var o = [encode(key)];

          if (value !== true) {

            o.push("=");

            o.push(encode(value));

          }

          arr.push(o.join(""));

        };

        var build = function(obj, base) {

          var newKey = function(key) {

            return !base || base == "" ? [key].join("") : [base, "[", key, "]"].join("");

          };

          jQuery.each(obj, function(key, value) {

            if (typeof value == 'object') 

              build(value, newKey(key));

            else

              addFields(chunks, newKey(key), value);

          });

        };

        

        build(this.keys);

        

        if (chunks.length > 0) queryString.push($hash);

        queryString.push(chunks.join($separator));

        

        return queryString.join("");

      }

    };

    

    return new queryObject(location.search, location.hash);

  };

}(jQuery.query || {}); // Pass in jQuery.query as settings object
 
 
如果想获取test,则可以引入插件后,
用如下方法获取:
var test = $.query.get('test');

如果参数有多个相同的名称 ,则可以这样:
var arr = $.query.get('testy');
输出:   [ 值1 ,   值2,   值3...]

如果要获取多个相同名称中的某一个,可以这样:
var arrayElement = $.query.get('testy[1]');

此插件不仅能获取参数,也能设置参数。

设置一个参数:
var newUrl = $.query.set("section", 5).toString();
输出   : "?section=5"

设置两个参数:
var newUrl = $.query.set("section", 5).set("action", "do").toString();
输出 :   "?action=do§ion=5"


删除一个参数:
var oldQueryAgain = $.query.REMOVE("type");

清空所有参数:
var emptyQuery = $.query.empty();

复制所有参数:
var stillTheSame = $.query.copy();

你可能感兴趣的:(jquery)