2012-08-28 132 views
1

如果我有一个类似"/api/User/Details/2c021192-25cb-43e1-9bba-3bd5604a0a3d"的URl,从URL客户端获取ID "2c02ds92-25cb-43e1-9bba-3bd5604a0a3d"的最佳方式是什么?如何从Url客户端获取Id?

我需要能够建立一个$.getJSON请求与ID和我在找做最彻底的方法使用JavaScript,jQuery的,等等。感谢

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

这是非常基本的。查找字符串上的'.split'函数。 – pimvdb

+0

是当前网址(如在运行时在地址栏中)还是代码中某处或文本字段中的网址? – SpYk3HH

+0

最简单的方法是使用'.lastIndexOf'或'indexOf,字符串从-1开始,然后是'url.substring(lastFwdSlashIndex + 1)' –

回答

1

如果ID总是将是URI的最后一节中,你可以做使用split类似

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

使用regular expressions和提取相应的部分(这似乎是UUID)来自URL。

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

编辑:如何从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/

编辑2:缩短用于匹配的图案(参见比较修订历史)。

+0

非常普通的正则表达式示例可能是: “/api/User/Details/2c021192-25cb-43e1-9bba-3bd5604a0a3d".match(/^\/api\/User\/Details \ /(。+)$ /)[1] – trueunlessfalse

+0

@trueunlessfalse:这将是毫无意义的,因为你可以做到没有正则表达式。如果只要匹配正确的表单,而不考虑字符串中的位置,则可以使用'[0-9a-f] {8} \ - [0-9a-f] {4} \ - [ 0-9a-f] {4} \ - [0-9a-f] {4} \ - [0-9a-f] {12}'(假设UUID将如下例所示:'2c021192 -25cb-43e1-9bba-3bd5604a0a3d')。 – Tadeck

0

,该URL转换为参数数组。然后,您的案例中的最后一个数组项将是您的ID。

这里有非常复杂的URL解析器,也许你应该在谷歌环顾一下适合你的需求。

0

试试这个

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

的simpliest:

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

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