2012-08-28 130 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;