52 javascript url
如果我有一个URL,如
http://localhost/search.php?year=2008
Run Code Online (Sandbox Code Playgroud)
我如何编写JavaScript函数来获取变量年份并查看它是否包含任何内容?
我知道它可以完成,location.search但我无法弄清楚它如何抓取参数.
Ale*_*lex 57
我最喜欢获取URL参数的方法是这种方法:
var parseQueryString = function() {
var str = window.location.search;
var objURL = {};
str.replace(
new RegExp( "([^?=&]+)(=([^&]*))?", "g" ),
function( $0, $1, $2, $3 ){
objURL[ $1 ] = $3;
}
);
return objURL;
};
//Example how to use it:
var params = parseQueryString();
alert(params["foo"]);
Run Code Online (Sandbox Code Playgroud)
ily*_*rov 34
你可以使用window.URL课程:
new URL(location.href).searchParams.get('year')
// Returns 2008 for href = "http://localhost/search.php?year=2008".
// Or in two steps:
const params = new URL(location.href).searchParams;
const year = params.get('year');
Run Code Online (Sandbox Code Playgroud)
CMS*_*CMS 30
非正则表达式方法,您可以简单地用字符"&"拆分并遍历键/值对:
function getParameter(paramName) {
var searchString = window.location.search.substring(1),
i, val, params = searchString.split("&");
for (i=0;i<params.length;i++) {
val = params[i].split("=");
if (val[0] == paramName) {
return val[1];
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
vin*_*yll 11
这个问题很古老,JavaScript已经发生了变化.你现在可以这样做:
const params = {}
document.location.search.substr(1).split('&').forEach(pair => {
[key, value] = pair.split('=')
params[key] = value
})
Run Code Online (Sandbox Code Playgroud)
而你得到的params.year包含2008.您还可以在params对象中获得其他查询参数.
编辑:更简洁/更简洁的方法:
const params = new Map(location.search.slice(1).split('&').map(kv => kv.split('=')))
Run Code Online (Sandbox Code Playgroud)
然后,您可以测试该year参数是否存在:
params.has('year') // true
Run Code Online (Sandbox Code Playgroud)
或者检索它:
params.get('year') // 2008
Run Code Online (Sandbox Code Playgroud)
以下使用正则表达式并仅搜索URL的查询字符串部分.
最重要的是,此方法支持普通和数组参数,如
http://localhost/?fiz=zip&foo[]=!!=&bar=7890#hashhashhash
function getQueryParam(param) {
var result = window.location.search.match(
new RegExp("(\\?|&)" + param + "(\\[\\])?=([^&]*)")
);
return result ? result[3] : false;
}
console.log(getQueryParam("fiz"));
console.log(getQueryParam("foo"));
console.log(getQueryParam("bar"));
console.log(getQueryParam("zxcv"));
Run Code Online (Sandbox Code Playgroud)
输出:
zip
!!=
7890
false
Run Code Online (Sandbox Code Playgroud)
function gup( name ) {
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
var year = gup("year"); // returns "2008"
Run Code Online (Sandbox Code Playgroud)
我花了一段时间才找到这个问题的答案.大多数人似乎都在建议使用正则表达式解决方案.我非常喜欢使用经过试验和测试的代码,而不是我或其他人在运行时想到的正则表达式.
我使用这里提供的parseUri库:http://stevenlevithan.com/demo/parseuri/js/
它可以让你完全按照你的要求去做:
var uri = 'http://localhost/search.php?year=2008';
var year = uri.queryKey['year'];
// year = '2008'
Run Code Online (Sandbox Code Playgroud)
小智 5
最简单的方法就是拥有
if (document.location.search.indexOf('yourtext=') >= 0) {
// your code
} else {
// what happens?
}
Run Code Online (Sandbox Code Playgroud)
该indexOf(text)函数返回
document.location.search.document.location.search.我希望这很有用,@ gumbo
| 归档时间: |
|
| 查看次数: |
114655 次 |
| 最近记录: |