我有一个带有一些GET参数的URL,如下所示:
www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5
我需要得到c的全部值。我试图读取URL,但只得到m2。如何使用JavaScript执行此操作?
我有一个带有一些GET参数的URL,如下所示:
www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5
我需要得到c的全部值。我试图读取URL,但只得到m2。如何使用JavaScript执行此操作?
当前回答
下面是一个获取单个参数的简单函数:
function getUrlParam(paramName) {
var match = window.location.search.match("[?&]" + paramName + "(?:&|$|=([^&]*))");
return match ? (match[1] ? decodeURIComponent(match[1]) : "") : null;
}
这些特殊情况的处理与URLSearchParams一致:
如果缺少参数,则返回null。如果参数存在但没有“=”(例如“?param”),则返回“”。
笔记如果参数名称可能包含特殊的URL或正则字符(例如,如果它来自用户输入),则需要对其进行转义
function getUrlParamWithSpecialName(paramName) {
return getUrlParam(encodeURIComponent(paramName).replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
}
其他回答
Try
url.match(/[?&]c=([^&]*)/)[1]
var url=“www.test.com/t.html?a=1&bc=3&c=m2-m3-m4-5”;c=url.match(/[?&]c=([^&]*)/)[1];控制台日志(c);
这是丹尼尔·索科洛夫斯基19年6月27日回答的改进。Regexp解释
[?&]第一个匹配的字符必须是?或&(省略ac=等参数)c=参数名称,结尾为=char(…)第一组匹配[^&]*零个或多个字符(*)不同于(^)&[1] 从匹配数组中选择第一组
我们可以以更简单的方式获取c参数值,而不必循环所有参数,请参见下面的jQuery获取参数。
1.获取参数值:
var url = "www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5";
url.match(**/(c=)[0-9A-Za-z-]+/ig**)[0].replace('c=',"")
(or)
url.match(**/(c=)[0-z-]+/ig**)[0].replace('c=',"")
以字符串形式返回
“m2-m3-m4-m5”
2.要替换参数值:
var url = "www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5";
url.replace(**/(c=)[0-9A-Za-z-]+/ig, "c=m2345"**)
我一次又一次遇到同样的问题。现在这里的许多用户现在我以我的HAX工作而闻名,
所以我用以下方法来解决:
PHP:
echo "<p style="display:none" id=\"hidden-GET\">".$_GET['id']."</p>";
JS:
document.getElementById("hidden-GET").innerHTML;
简单的HAX但有效。
我在这里举了一个例子。但它在jQuery中。希望它能帮助其他人:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.url.js"></script>
<!-- URL: www.example.com/correct/?message=done&year=1990-->
<script type="text/javascript">
$(function(){
$.url.attr('protocol') // --> Protocol: "http"
$.url.attr('path') // --> host: "www.example.com"
$.url.attr('query') // --> path: "/correct/"
$.url.attr('message') // --> query: "done"
$.url.attr('year') // --> query: "1990"
});
</script>
window.location.href.split("?")
则忽略第一个索引
Array.prototype.slice.call(window.location.href.split("?"), 1)
返回url参数数组
var paramArray = Array.prototype.slice.call(window.location.href.split(/[?=]+/), 1);
var paramObject = paramArray.reduce(function(x, y, i, a){ (i%2==0) ? (x[y] = a[i+1]) : void 0; return x; }, {});
paramObject包含映射为js对象的所有参数