如何在 JavaScript 中获取路由参数?

Posted

技术标签:

【中文标题】如何在 JavaScript 中获取路由参数?【英文标题】:How to get route parameter in JavaScript? 【发布时间】:2013-12-16 15:42:45 【问题描述】:

我有一个启用 URL 重写的 ASP.NET 网站。我知道如何使用 C# 获取路由参数:

Page.RouteData.Values["id"] as string;

但我不知道如何从 javascript 中获取它?以下是我重写的链接格式:

http://www.domain.com/topic/id/title

我想使用 JavaScript 获取这个 id 字段。请帮忙!

更新

我有这个获取请求参数的代码。

function getParameterByName(name) 
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));

如何修改获取路由参数?

【问题讨论】:

查看这篇文章,我想你会在那里找到解决方案:link URL 参数是不同的东西。我不认为它会起作用。 如果你的格式是http://www.domain.com/topic/id/title,那么你为什么不在一个字符串中window.location.href;在'/'上拆分它;然后访问特定的索引。 @srvikram13 请举例说明你到底想说什么。 @AishwaryaShiva 检查我在下面发布的解决方案。 【参考方案1】:
function getValueAtIndex(index)
    var str = "http://www.sample.com/234/Fiddle/test"; //window.location.href; 
    return str.split("/")[index];

console.log(getValueAtIndex(3));

更新

这是使用普通 JS 在路由中的索引处获取值的更简洁的方法:

    location.pathname.split('/')[index]
    

例如,对于当前页面,

location.pathname = '/questions/20302776/how-to-get-route-parameter'

您可以通过以下方式获取问题 ID:

location.pathname.split('/')[2]

// Notice that the index does not start from zero.

【讨论】:

如果使用虚拟目录,这有点糟糕。 我喜欢这样,但将字符串拆分为一个单独的数组变量,然后使用数组长度 - 提供的索引 - 1 作为数组索引。这样它就可以向后工作,因此索引 0 会返回“测试”,索引 1 会返回“小提琴”等。这将解决虚拟目录的问题。【参考方案2】:

尝试以下方法:

const getRouteValueAt = (idx) => 

   const routeTokens = location.pathname.replace(/^\/+/g,'').split('/')
   //[questions,20302776,how-to-get-route-parameter-in-javascript]

   return routeTokens.length > idx ? routeTokens[idx] : undefined

用法

const routeName = getRouteValueAt(0); // questions
const routeId = getRouteValueAt(1); // 20302776

【讨论】:

以上是关于如何在 JavaScript 中获取路由参数?的主要内容,如果未能解决你的问题,请参考以下文章

vue-router2.0动态路由获取参数

如何获取路由器未加载的组件中路由更改的当前路由参数

如何在 AJAX 调用中获取 JavaScript 变量作为 Laravel 路由名称

laravel 5.2 如何在刀片中获取路由参数?

如何在 Vuex 中获取 Vue 路由器参数?

如何在Zend Framework 2中访问路由,发布,获取等参数