如何从URL中获取参数?

5
6个回答

14

3

纯JS

var arr = (window.location.pathname).split("/");
var val = (arr[arr.length-1]);

您需要的值在val中。

2
这里可能有点过头了,但对于URL解析,我发现这个很有用:

一个jQuery插件,用于解析url并提供轻松访问其中的信息,例如协议、主机、端口、构成路径的各个段以及各种查询字符串值。

在您的情况下,这将归结为类似以下内容:
jQuery.url.setUrl("http://localhost:8080/steer/trip/create/3").segment("4");

可能有点过度,但很实用。 - mattsven
我认为这是“知道这种事情的存在是好的”类型的信息 +1。 - Tx3

1
这将输出“3”,或者说是在最后一个“/”斜杠之后的整个URL的最后一段。
var urlsegment = top.location.href.match(/([^\/]+)$/)[1]

0

我假设您想通过jQuery在客户端访问控制器操作方法的参数值。

在这种情况下,我宁愿将参数值作为视图中的元数据发出,并使用jQuery查询它,而不是解析url本身(但您需要决定在哪里发出)。

在ASP.NET MVC中,如果您有一个接受以下模式的路由:{controller}{action}{param}http:\myhost\mycontroller\myaction\3http:\myhost\mycontroller\myaction?param=3是等效的,仅解析一个URL模式将不足以满足需求。

您可能会发现jQuery mdatadata plugin中的示例很有用。

以下是上述链接中的一个示例。

<li class="someclass {some: 'data'} anotherclass">...</li>
<script>alert($('li.someclass').metadata().some);</script>

如果我的假设不正确,请忽略这个答案。


-2

这里有一个易于阅读和理解的JS函数,您可以使用它来检索URL中的任何变量。

您需要做的就是使用要过滤的变量名称调用此函数,它将返回值给您。

希望它能帮到您:

function getVarFromURL(varName){
            var url = window.location.href;
            url = url.substring(url.indexOf('?'));
            var urlLowerCase = url.toLowerCase();
            varName = varName.toLowerCase();
            if (urlLowerCase.indexOf(varName + "=") != -1) {
                var value = url.substring(urlLowerCase.indexOf(varName) + varName.length + 1);
                if (value.indexOf('&') != -1) {
                    value = value.substring(0, value.indexOf('&'));
                }
                return value;
            }
            else {
                return null;
            }
}

嗯...看起来我误读了你的问题...上面的解决方案只会过滤使用“GET”方法发布的变量。 - sharmaprateek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接