• 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();

  • 相关阅读:
    No-3.Linux 终端命令格式
    No-2.常用 Linux 命令的基本使用
    No-1.文件和目录
    No-7.运算符
    No-6.If语句
    No-5.变量的命名
    YOLOv4详细分析 | 细数当前最佳检测框架小细节(附论文及源码下载)
    案例】S7-200SMART 实时时钟如何在MCGS触摸屏上显示并写入
    卡尔曼滤波:从入门到精通
    mmdetection最小复刻版(七):anchor-base和anchor-free差异分析
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1996497.html
Copyright © 2020-2023  润新知