【问题标题】:How to get an Id out of a Url client side?如何从 Url 客户端获取 Id?
【发布时间】:2012-08-29 05:29:37
【问题描述】:

如果我有一个像 "/api/User/Details/2c021192-25cb-43e1-9bba-3bd5604a0a3d" 这样的 URL,那么从 URL 客户端获取 ID "2c02ds92-25cb-43e1-9bba-3bd5604a0a3d" 的最佳方法是什么?

我需要能够使用 ID 构建 $.getJSON 请求,并且我正在寻找使用 JavaScript、jQuery 等最简洁的方法。谢谢

$.getJSON('/api/User/2c021192-25cb-43e1-9bba-3bd5604a0a3d')...

【问题讨论】:

  • 这是非常基本的。在字符串上查找.split 函数。
  • 是当前的 url(如运行时在地址栏中)还是代码中某处或文本字段中的 url?
  • 最简单的方法是使用.lastIndexOfindexOf with string starting from -1 然后url.substring(lastFwdSlashIndex + 1)
  • 有一个plugin here 可能会有所帮助

标签: javascript jquery asp.net-web-api


【解决方案1】:

使用regular expressions 并从 URL 中提取适当的部分(似乎是 UUID)。

另一种方法是将字符串按/ 拆分并获取最后一个元素。

编辑:关于如何从 URI 中检索 UUID 的示例:

var url = '/api/User/2c021192-25cb-43e1-9bba-3bd5604a0a3d';

var pattern = /[\da-f]{8}\-[\da-f]{4}\-[\da-f]{4}\-[\da-f]{4}\-[\da-f]{12}/;
var match = url.match(pattern)[0];

url.match(pattern) 返回匹配数组,因此假设至少有一个匹配,并且只有一个匹配,您应该选择它(使用[0],如示例中所示)。

证明:http://jsfiddle.net/p6zud/2/

EDIT 2:缩短了用于匹配的模式(参见修订历史进行比较)。

【讨论】:

  • 一个非常不通用的正则表达式示例可能是:"/api/User/Details/2c021192-25cb-43e1-9bba-3bd5604a0a3d".match(/^\/api\/User\/Details\/ (.+)$/)[1]
  • @trueunlessfalse:这将毫无意义,因为您可以在没有正则表达式的情况下做到这一点。如果您只想在匹配正确的形式时提取它,无论在字符串中的位置如何,都可以使用[0-9a-f]{8}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{12}(假设 UUID 将显示为示例中的 UUID:2c021192-25cb-43e1-9bba-3bd5604a0a3d)。
【解决方案2】:

如果 id 始终是 URI 的最后一部分,你可以这样做

var url_array = document.location.split('/');
var id = url_array[url_array.length - 1];

【讨论】:

    【解决方案3】:

    使用split,将 url 转换为参数数组。那么你的最后一个数组项就是你的 ID。

    有非常复杂的 javascript URL 解析器,也许你应该在 google 上寻找一个适合你需要的。

    【讨论】:

      【解决方案4】:

      最简单的:

      var id = '/api/User/2c021192-25cb-43e1-9bba-3bd5604a0a3d'.split('/User/')[1];
      

      给你2c021192-25cb-43e1-9bba-3bd5604a0a3d

      【讨论】:

        【解决方案5】:

        试试这个

        alert("/api/User/Details/2c021192-25cb-43e1-9bba-3bd5604a0a3d".split('/').slice(-1)[0]);
        

        【讨论】:

          猜你喜欢
          • 2016-02-13
          • 2013-03-18
          • 2014-06-02
          • 2016-01-16
          • 1970-01-01
          • 1970-01-01
          • 2018-03-19
          • 2012-10-07
          • 1970-01-01
          相关资源
          最近更新 更多