检查是否使用JQuery设置了URL变量

时间:2011-05-14 12:31:20

标签: jquery url query-string

我想知道是否有一个jQuery函数可以检查URL中是否设置了变量。

类似于PHP中的isset()函数

由于

2 个答案:

答案 0 :(得分:26)

jQuery没有获取URL参数的本机函数。

但你可以自己编写插件:

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

然后你可以做任何类似的事情:

if ($.getUrlVar("MyParam") != null) {
    // Do anything...
}

答案 1 :(得分:2)

jQuery没有提供这样的方法。但你甚至不需要jQuery这样做:

(function() {
    var params = null;
    this.l = typeof Location !== "undefined" ? Location.prototype : window.location;
    this.l.getParameter = function(name) {
        return Array.prototype.slice.apply(this.getParameterValues(name))[0];
    };
    this.l.getParameterMap = function() {
        if (params === null) {
            params = {};
            this.search.substr(1).split("&").map(function(param) {
                if (param.length === 0) return;
                var parts = param.split("=", 2).map(decodeURIComponent);
                if (!params.hasOwnProperty(parts[0])) params[parts[0]] = [];
                params[parts[0]].push(parts.length == 2 ? parts[1] : null);
            });
        }
        return params;
    };
    this.l.getParameterNames = function() {
        var map = this.getParameterMap(), names = [];
        for (var name in map) {
            if (map.hasOwnProperty(name)) names.push(name);
        }
        return names;
    };
    this.l.getParameterValues = function(name) {
        return this.getParameterMap()[name];
    };
})();

这会使用方法locationgetParametergetParameterMapgetParameterNames(类似于Java’s ServeletRequest)扩展getParameterValues对象使用如下:

if (typeof location.getParameter("foo") !== "undefined") {
    // foo parameter exists
}

getParameter的返回值具有以下含义:

  • undefined:给定参数不存在
  • null:给定参数没有指定值(例如foo中的a=b&foo&c=d
  • 否则为任何字符串值。