2012-01-05 79 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的值转换为可以更容易解析的“真实”值。