考虑:

http://example.com/page.html?returnurl=%2Fadmin

对于page.html内的js,它如何检索GET参数?

对于上面的简单例子,func('returnurl')应该是/admin。

但它也应该适用于复杂的查询字符串…


当前回答

获取JSON对象的参数:

console.log(getUrlParameters())

function getUrlParameters() {
    var out = {};
    var str = window.location.search.replace("?", "");
    var subs = str.split(`&`).map((si)=>{var keyVal = si.split(`=`); out[keyVal[0]]=keyVal[1];});
    return out
}

其他回答

Window.location.search将返回?上。下面的代码将删除?,使用split将键/值数组分开,然后将命名属性分配给params对象:

function getSearchParameters() {
    var prmstr = window.location.search.substr(1);
    return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
}

function transformToAssocArray( prmstr ) {
    var params = {};
    var prmarr = prmstr.split("&");
    for ( var i = 0; i < prmarr.length; i++) {
        var tmparr = prmarr[i].split("=");
        params[tmparr[0]] = tmparr[1];
    }
    return params;
}

var params = getSearchParameters();

然后,您可以通过调用params.test从http://myurl.com/?test=1获取测试参数。

获取JSON对象的参数:

console.log(getUrlParameters())

function getUrlParameters() {
    var out = {};
    var str = window.location.search.replace("?", "");
    var subs = str.split(`&`).map((si)=>{var keyVal = si.split(`=`); out[keyVal[0]]=keyVal[1];});
    return out
}

如果你正在使用AngularJS,你可以使用ngRoute模块使用$routeParams

你必须添加一个模块到你的应用程序

angular.module('myApp', ['ngRoute'])

现在你可以使用service $routeParams:

.controller('AppCtrl', function($routeParams) {
  console.log($routeParams); // JSON object
}

您可以使用位置对象中可用的搜索函数。搜索函数提供URL的参数部分。详细信息可在位置对象中找到。

你将不得不解析结果字符串来获得变量和它们的值,例如在'='上拆分它们。

var getQueryParam = function(param) {
    var found;
    window.location.search.substr(1).split("&").forEach(function(item) {
        if (param ==  item.split("=")[0]) {
            found = item.split("=")[1];
        }
    });
    return found;
};