2012-01-05 35 views
-1

我試圖從URL中提取特定的文件名,我查看了帖子,但沒有任何回答我需要的問題。我需要從Javascript或Jquery的,可以拉只是文件名(「測試1」):使用JavaScript/Jquery從URL中提取特定的文件名

http://sharepoint/sites/Jarrod/DurangoTest/SitePages/Home.aspx?RootFolder=%2Fsites%2FJarrod%2FDurangoTest%2FShared%20Documents%2FTest1&FolderCTID=0x01200094D5A58A4F099E49BE1A8BA2F7DE9E0D&View={653454F3-1CE4-48C1-967C-5BA6023D349E} 
+0

這是1周前詢問的問題的複本。 – Jonathan 2012-01-05 20:50:04

回答

0

你可以像從window.location對象的URL信息。試試這個

params = window.location.search.split(/&/) 

for (var i=0; i < params.length; i++) { 
    if (params[i].match(/^\??RootFolder=/)){ 
    paths = params[i].split(/\//); 
    filename = paths[paths.length-1]; 
    break; 
    } 
}; 
+0

這會讓你在最後一個'/'字符後面得到一切。提供的URL還包含查詢字符串,因此需要額外的解析來移除該部分並獲取文件名。 – TLS 2012-01-05 20:34:26

+0

是啊,我想我誤解了他在找什麼...我會更新我的答案 – Jonathan 2012-01-05 20:36:36

0

@Jonathan在正確的軌道上。看起來你正在尋找解析來自查詢字符串的值,而不是找到所請求的文件的名稱。你首先需要從查詢字符串中獲取值。您可以使用window.location.search從URL中獲取完整查詢字符串。然後解析查詢字符串以找到您想要的值。這裏有一個小JS函數,它是:

// parses the query string provided and returns the value 
function GetQueryVariable(query, name) { 
    if (query.indexOf("?") == 0) { query = query.substr(1); } 
    var pairs = query.split("&"); 
    for (var i = 0; i < pairs.length; i++) { 
     var pair = pairs[i].split("="); 
     if (pair[0] == name) { 
      return pair[1]; 
     } 
    } 
    return ""; 
} 

然後你就可以使用解析喬納森的建議,獲取文件名的值。你可能需要做一些修改(使用JS方法unescape)將來自querystring的值轉換爲可以更容易解析的「真實」值。