文章内容
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 查找参数值
评论列表