使用RESTAPI和Javascript合并代码以绘制表和移动文件

使用RESTAPI和Javascript合并代码以绘制表和移动文件,javascript,ajax,sharepoint-online,restapi,Javascript,Ajax,Sharepoint Online,Restapi,下面的代码使用CEWP SPO绘制表格。我需要在同一个表中的每一行上添加一个按钮,将相应的文件从当前位置移动到同一SPO站点中的另一个文档库。使用FileLeafRef检索文件名 数据是使用ajaxget类型提取的,move命令将使用POST类型。请协助合并这两个功能,以获得所需的 现行代码 $(function(){ var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbyt

下面的代码使用CEWP SPO绘制表格。我需要在同一个表中的每一行上添加一个按钮,将相应的文件从当前位置移动到同一SPO站点中的另一个文档库。使用FileLeafRef检索文件名

数据是使用ajaxget类型提取的,move命令将使用POST类型。请协助合并这两个功能,以获得所需的

现行代码

$(function(){
        var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('List_Name')/items?$top=10&$orderby=Created%20desc&$select=Reg,NBR,Date";
           $.ajax({
              url: requestUri,
              type: "GET",
              headers: {
                  "accept":"application/json; odata=verbose"
              },
              success: onSuccess,
});
  function onSuccess(data) {
     var objItems = data.d.results;
     var tableContent = '<table id="Table"><tr><th>Reg</th><th>Num</th><th>Date</th></tr>';
     for (var i = 0; i < objItems.length; i++) {
         tableContent += '<tr>';
         tableContent += '<td>' + objItems[i].Reg + '</td>';
         tableContent += '<td>' + objItems[i].NBR + '</td>';
         tableContent += '<td>' + moment(objItems[i].Date).format("DD-MM-YYYY") + '</td>';       
         tableContent += '</tr>';
 }
   $('#Grid').append(tableContent);
   }
});

检查下面的合并代码:

<script>


    $(function () {
        var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('Documents')/items?$top=10&$orderby=Created desc&$select=*,FileLeafRef";
        $.ajax({
            url: requestUri,
            type: "GET",
            headers: {
                "accept": "application/json; odata=verbose"
            },
            success: onSuccess,
        });
        function onSuccess(data) {
            var objItems = data.d.results;
            console.log(objItems)
            var tableContent = '<table id="Table" style="width:100%"><tr><th>ID</th><th>Title</th><th>Date</th></tr>';

            for (var i = 0; i < objItems.length; i++) {
                if (objItems[i].FileSystemObjectType != 1) {
                    var fileName=encodeURI(objItems[i].FileLeafRef);
                    var button = "<input type='button' value='MoveFile' onclick= MoveFile('"+encodeURI(objItems[i].FileLeafRef) +"')>"
                    tableContent += '<tr>';
                    tableContent += '<td>' + objItems[i].ID + '</td>';
                    tableContent += '<td>' + objItems[i].FileLeafRef + '</td>';
                    tableContent += '<td>' + moment(objItems[i].Created).format("DD-MM-YYYY") + '</td>';
                    tableContent += '<td>' + button + '</td>';
                    tableContent += '</tr>';

                }
            }
            $('#Grid').append(tableContent);
        }
    });

    function MoveFile(FileLeafRef) {
        var sourceFile = "/sites/NewProvision/Shared Documents/" + FileLeafRef;
        var targetFile = '/sites/NewProvision/doc1/' + FileLeafRef;
        var oUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/GetFileByServerRelativePath(decodedurl='" + sourceFile + "')/moveto(newurl='" + targetFile + "',flags=1)";
        $.ajax({
            url: oUrl,
            type: "POST",
            headers: {
                "Accept": "application/json; odata=verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").val()
            },
            success: function (data) {
                console.log(data);
            },
            error: function (data) {
                console.log(data);
            }
        });
    }
</script>

<div id="Grid">
在MoveFile函数中,将FileLeafRef作为特定文件名的参数传递,并为动态设置文件url定义sourceFile/targetFile参数


嗨,杰瑞,谢谢你的帮助。我得到了未捕获的SyntaxError:无效或意外的标记,并且我看到传递的文件名已损坏。例如,我猜这个问题是由于文件名中的空格造成的吗?但是想知道文件名值中的=是从哪里来的。另外,由于空格的原因,删除文件名中的所有空格也会起作用。我修改了代码以修复文件名问题,但现在未捕获语法错误:参数列表后缺少。由于我有近5k个文件,所以不可能删除文件名中的所有空格。很好,我刚刚测试过,将更新到答案中,如果有特殊字符,最好使用GetFileByServerRelativePath
<script>


    $(function () {
        var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('Documents')/items?$top=10&$orderby=Created desc&$select=*,FileLeafRef";
        $.ajax({
            url: requestUri,
            type: "GET",
            headers: {
                "accept": "application/json; odata=verbose"
            },
            success: onSuccess,
        });
        function onSuccess(data) {
            var objItems = data.d.results;
            console.log(objItems)
            var tableContent = '<table id="Table" style="width:100%"><tr><th>ID</th><th>Title</th><th>Date</th></tr>';

            for (var i = 0; i < objItems.length; i++) {
                if (objItems[i].FileSystemObjectType != 1) {
                    var fileName=encodeURI(objItems[i].FileLeafRef);
                    var button = "<input type='button' value='MoveFile' onclick= MoveFile('"+encodeURI(objItems[i].FileLeafRef) +"')>"
                    tableContent += '<tr>';
                    tableContent += '<td>' + objItems[i].ID + '</td>';
                    tableContent += '<td>' + objItems[i].FileLeafRef + '</td>';
                    tableContent += '<td>' + moment(objItems[i].Created).format("DD-MM-YYYY") + '</td>';
                    tableContent += '<td>' + button + '</td>';
                    tableContent += '</tr>';

                }
            }
            $('#Grid').append(tableContent);
        }
    });

    function MoveFile(FileLeafRef) {
        var sourceFile = "/sites/NewProvision/Shared Documents/" + FileLeafRef;
        var targetFile = '/sites/NewProvision/doc1/' + FileLeafRef;
        var oUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/GetFileByServerRelativePath(decodedurl='" + sourceFile + "')/moveto(newurl='" + targetFile + "',flags=1)";
        $.ajax({
            url: oUrl,
            type: "POST",
            headers: {
                "Accept": "application/json; odata=verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").val()
            },
            success: function (data) {
                console.log(data);
            },
            error: function (data) {
                console.log(data);
            }
        });
    }
</script>

<div id="Grid">