要删除SharePoint中的所有列表项,我尝试了以下代码,但我大部分时间都会收到500内部服务器错误以进行REST调用。如果列表项少于5,那么代码工作正常。
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getByTitle('TestList')/items",
type: "GET",
headers: {
"accept": "application/json;odata=verbose",
},
success: function (data) {
var items = data.d.results;
for(var item in items){
var itemUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/Web/Lists/getByTitle('TestList')/getItemById(" + item.ID + ")";
deleteItem(itemUrl, item.__metadata);
}
},
error: function (error) {
console.log(JSON.stringify(error));
}
});
function deleteItem(itemUrl, metadata) {
$.ajax({
url: itemUrl,
type: "DELETE",
headers: {
"accept": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"If-Match": metadata.etag
},
success: function (data) {
console.log("deleted item")
},
error: function (error) {
console.log(JSON.stringify(error));
}
});
}
我尝试过“If-Match”:*和etag但没有成功。我在这里做错了吗?
答案 0 :(得分:0)
这通常是由以下原因引起的:
tempdb或您的内容数据库空间不足。
或
数据库上的自动增长设置太小。
空间不足很容易理解,但是引起这种情况的自动增长设置不太明显。如果数据库(数据或日志)空间不足,它将尝试“声明”自动增长设置所定义的额外存储空间。如果此值太小,则新声明的空间可能不足,从而导致其出错或尝试声明更多的空间。声明存储系统上的空间通常很快,但是它依赖于操作系统响应请求,并且如果存储子系统非常忙,则它可能花费比SQL Server愿意等待的时间更长的时间,从而引发异常。我远离“百分比”增长设置,并至少使用100MB作为“增长依据”值。如果您的存储空间受到严重限制,建议您尽可能多地声明数据所有权,同时还要为日志保留足够的空间。没有“定”答案。这取决于您有多少空间以及数据库/站点的活跃程度。
答案 1 :(得分:0)
这是一篇旧文章,但是我还是想分享解决方案。
您在这里做的错误是您在遍历项目数组时正在使用in
。您应该改为使用of
。然后,您将获得正确的ID。否则,您将获得数组中该项的索引。
更改此:
for (var item in items)
对此:
for (var item of items)
完整代码:
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getByTitle('MyList')/items",
type: "GET",
headers: {
"accept": "application/json;odata=verbose",
},
success: function (data) {
var items = data.d.results;
for (var item of items) {
var itemUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/Web/Lists/getByTitle('MyList')/getItemById(" + item.ID + ")";
deleteItem(itemUrl, item.__metadata);
}
},
error: function (error) {
console.log(JSON.stringify(error));
}
});
function deleteItem(itemUrl, metadata) {
$.ajax({
url: itemUrl,
type: "DELETE",
headers: {
"accept": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"If-Match": metadata.etag
},
success: function (data) {
console.log("deleted item")
},
error: function (error) {
console.log(JSON.stringify(error));
}
});
}