文章内容

2018/11/2 16:56:28,作 者: 黄兵

Javascript url 查找参数值

最近需要使用javascript获得url的参数值(javascript url parameters),url结构如下:

http://www.materialtools.com/manage/material_property_value?pro_id=2&classification_id=8&item_id=6

原来需要查询url的参数值写法如下:

function get_url_param() {
    var get_item_str = location.search;
    var get_item_length = get_item_str.length;
    var get_item_index = get_item_str.indexOf('item_id=')
    var get_item_id = get_item_str.substr(get_item_index + 'item_id='.length, get_item_length)
    if (get_item_id === null) {
        return false;
    } else {
        return get_item_id;
    }
}

但是参数变多了查询起来很麻烦。找了一下简单方法,这个问题终于解决了。

Javascript本身并没有内置处理查询url字符串参数的方法,但是现代浏览器可以使用URLSearchParams

function get_url_param() {
    var url_string=window.location.href;
    var url=new URL(url_string);
    var get_item_id=url.searchParams.get("item_id");
    if (get_item_id === null) {
        return false;
    } else {
        return get_item_id;
    }
}

这样方便多了,多参数也很容易查询。 

如果浏览器不支持,可以使用下面的方法改写:

function parse_query_string(query) {
  var vars = query.split("&");
  var query_string = {};
  for (var i = 0; i < vars.length; i++) {
    var pair = vars[i].split("=");
    var key = decodeURIComponent(pair[0]);
    var value = decodeURIComponent(pair[1]);
    // If first entry with this name
    if (typeof query_string[key] === "undefined") {
      query_string[key] = decodeURIComponent(value);
      // If second entry with this name
    } else if (typeof query_string[key] === "string") {
      var arr = [query_string[key], decodeURIComponent(value)];
      query_string[key] = arr;
      // If third or later entry with this name
    } else {
      query_string[key].push(decodeURIComponent(value));
    }
  }
  return query_string;
}

之后查询写法如下:

var query_string = "a=1&b=3&c=m2-m3-m4-m5";
var parsed_qs = parse_query_string(query_string);
console.log(parsed_qs.c);

最后看看查询结果截图:



参考资料:

1、MDN web docs - URLSearchParams

2、How to get the value from the GET parameters?


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - Javascript url 查找参数值

分享到:

发表评论

评论列表