others - javascript如何从GET参数获取值?

我有一个包含一些参数的URL,如下所示:


www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5 



我需要得到 c的全部价值。 我试图读网址,但我只获取到 m2 。 如何使用JavaScript进行这里操作?

时间:

JavaScript 本身没有内置的句柄查询字符串参数。

可以在( 现代) 浏览器中运行的代码可以使用 URL 对象 ( 它是浏览器提供给JS的api的一部分):


var url_string ="http://www.example.com/t.html?a=1&b=3&c=m2-m3-m4-m5";//window.location.href


var url = new URL(url_string);


var c = url.searchParams.get("c");


console.log(c);

对于旧版浏览器,你可以使用这里polyfill插件或者来自原始版本的代码,早于 URL:

你可以访问 location.search,它会让你从URL的结尾或者 fragment 标识符( #foo )的开始处获取 ? 字符。

然后,你可以用下面的方法来解析它:


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

你可以从当前页面的URL中获取查询字符串,其中包含:


var query = window.location.search.substring(1);


var qs = parse_query_string(query);



我看到的大多数的实现都遗漏了url的名称和值的解码。

下面是一个通用的实用程序功能,它还可以进行正确的url解码:


function getQueryParams(qs) {


 qs = qs.split('+').join(' ');



 var params = {},


 tokens,


 re =/[?&]?([^=]+)=([^&]*)/g;



 while (tokens = re.exec(qs)) {


 params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);


 }



 return params;


}



//var query = getQueryParams(document.location.search);


//alert(query.foo);



源代码


function gup( name, url ) {


 if (!url) url = location.href;


 name = name.replace(/[[]/,"[").replace(/[]]/,"]");


 var regexS ="[?&]"+name+"=([^&#]*)";


 var regex = new RegExp( regexS );


 var results = regex.exec( url );


 return results == null? null : results[1];


}


gup('q', 'hxxp://example.com/?q=abc')



...