考虑:
http://example.com/page.html?returnurl=%2Fadmin
对于page.html内的js,它如何检索GET参数?
对于上面的简单例子,func('returnurl')应该是/admin。
但它也应该适用于复杂的查询字符串…
考虑:
http://example.com/page.html?returnurl=%2Fadmin
对于page.html内的js,它如何检索GET参数?
对于上面的简单例子,func('returnurl')应该是/admin。
但它也应该适用于复杂的查询字符串…
当前回答
如果你正在使用AngularJS,你可以使用ngRoute模块使用$routeParams
你必须添加一个模块到你的应用程序
angular.module('myApp', ['ngRoute'])
现在你可以使用service $routeParams:
.controller('AppCtrl', function($routeParams) {
console.log($routeParams); // JSON object
}
其他回答
我这样做(检索一个特定的get-parameter,这里'parameterName'):
var parameterValue = decodeURIComponent(window.location.search.match(/(\?|&)parameterName\=([^&]*)/)[2]);
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;
};
这是另一个基于Kat和Bakudan例子的例子,但让它更通用一点。
function getParams ()
{
var result = {};
var tmp = [];
location.search
.substr (1)
.split ("&")
.forEach (function (item)
{
tmp = item.split ("=");
result [tmp[0]] = decodeURIComponent (tmp[1]);
});
return result;
}
location.getParams = getParams;
console.log (location.getParams());
console.log (location.getParams()["returnurl"]);
这个解决方案处理URL解码:
var params = function() {
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
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]] = urldecode(tmparr[1]);
}
return params;
}
var prmstr = window.location.search.substr(1);
return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
}();
用法:
console.log('someParam GET value is', params['someParam']);
获取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
}