如何在SharePoint 2013中使用REST API + JQuery访问文档的URL?

时间:2014-01-30 20:51:00

标签: jquery api sharepoint

我正在对SP2013 doc库进行基本的OData / REST调用。我试图找到项目的URL,但无法确定如何执行此操作。我对服务器端对象模型非常熟悉,并且理解文件对象比项目更深一级。有人能指出我正确的方向或分享如何进入文件级别的文档?我已经搜索谷歌了。这是我的代码,仅用于访问doc库中的所有项目以及我希望定位的任何元数据列:

<html>
<head>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
</html>

<script>
    // workaround for access error
    jQuery.support.cors = true;

    // create REST query
    var requestUri = "http://sp2013/_api/Web/Lists/getByTitle('Documents')/items"; 

    // execute AJAX request
    $.ajax({
        url: requestUri,
        type: "GET",
        headers: { "Accept": "application/json; odata=verbose" },
        success: function(data){
            alert(data.d.results);
            $.each(data.d.results, function(index, item){
                if (item["Meta1"] == null) {
                    $("body").append("<h1>No Title</h1>");
                }
                else {
                    $("body").append("<h1>" + item["Meta1"] + "</h1>");
                }
            });
        },
        error: function(jqXHR, textStatus, errorThrown){
            alert(textStatus);
        }
    });
</script>

3 个答案:

答案 0 :(得分:13)

对于完整网址,请尝试:

"http://sp2013/_api/Web/Lists/getByTitle('Documents')/items?$select=EncodedAbsUrl"

答案 1 :(得分:6)

使用带有FileRef参数的$ select查询选项返回文档Url:

https://contoso.sharepoint.com/_api/web/lists/getbytitle('Documents')/items?$select=FileRef

参考

Use OData query operations in SharePoint REST requests

答案 2 :(得分:0)

我认为您可以使用SharepointPlus来做到这一点 - 但它是第三方库。在documentation中有以下示例:

// if you want to list all the files and folders for a Document Library
$SP().list("My Shared Documents").get({
  fields:"BaseName,FileRef,FSObjType", // "BaseName" is the name of the file/folder; "FileRef" is the full path of the file/folder; "FSObjType" is 0 for a file and 1 for a folder (you need to apply $SP().cleanResult())
  folderOptions:{
    show:"FilesAndFolders_Recursive"
  }
});

至少可以给你一些想法。