如何使用javascript从编码的URL获取查询字符串的值?

时间:2016-09-14 12:01:42

标签: javascript string url query-string

我在javascript中有以下编码的URL字符串

var querystring = "http%3A%2F%2Fspsrv%3A1361%2FSitePages%2FCountryManagment%2Easpx%3FCountryId%3D1";

如何从中获取CountryId的值?

2 个答案:

答案 0 :(得分:1)

您需要使用decodeURIcomponent对网址进行解码,然后使用regex从网址

获取参数
var querystring = decodeURIComponent("http%3A%2F%2Fspsrv%3A1361%2FSitePages%2FCountryManagment%2Easpx%3FCountryId%3D1");
document.getElementById("decodedURL").innerHTML = querystring;
function getParam(param, url) {
    if (!url) url = window.location.href;
    param = param.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + param + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return results[2].replace(/\+/g, " ");
}
document.getElementById("parameter").innerHTML = getParam("CountryId", querystring);

演示:JSFIDDLE

答案 1 :(得分:1)

首先,你应该使用.decodeURI()来解码网址,你可以这样做。然后,您可以使用.split()将网址拆分为数组,或使用.match()通过正则表达式选择网址的特定部分。

var querystring = "http%3A%2F%2Fspsrv%3A1361%2FSitePages%2FCountryManagment%2Easpx%3FCountryId%3D1";

var result = decodeURIComponent(querystring).split("?")[1].split("=")[1];
var result2 = decodeURIComponent(querystring).match(/CountryId=([\d]+)/)[1];

console.log(result, result2);