使用RESTAPI和Javascript合并代码以绘制表和移动文件
下面的代码使用CEWP SPO绘制表格。我需要在同一个表中的每一行上添加一个按钮,将相应的文件从当前位置移动到同一SPO站点中的另一个文档库。使用FileLeafRef检索文件名 数据是使用ajaxget类型提取的,move命令将使用POST类型。请协助合并这两个功能,以获得所需的 现行代码使用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
$(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">