如何使用Sharepoint 2013的REST删除项目

5

我正在创建一个Sharepoint应用程序,受限于使用JavaScript(包括jQuery)和REST端点。我想使用Web应用程序从主机中删除项目,但是我遇到了错误(403:FORBIDDEN)。到目前为止,这是我的代码:

executor = new SP.RequestExecutor(appweburl);
executor.executeAsync({
    url: appweburl + "/_api/SP.AppContextSite(@target)/web/lists/getbytitle('" + currentListTitle + "')/items(" + result.Id + ")/?@target='" + hostweburl + "'",
    method: "POST",
    headers: {
               "accept": "application/json",
               "X-RequestDigest": ?????
               "IF-MATCH": "*",
               "X-HTTP-Method": "DELETE"
             },
    success: onDeleteItemSuccess,
    error: onDeleteItemFail
});

现在我发现X-RequestDigest是必需的,我发现一些REST调用可以获取它:

$.ajax({
    url: appweburl + "/_api/SP.AppContextSite(@target)/contextinfo/?@target='" + hostweburl + "'",
    type: "POST",
    contentType: "application/x-www-url-encoded",
    dataType: "json",
    success: function (data) {
        if (data.d)
        {
            digestValue = data.d.GetContextWebInformation.FormDigestValue;
            alert(digestValue);
        }
    },
    error: function (xhr) {
        alert(xhr.status + ': ' + xhr.statusText);
    }
});

但是它根本不起作用(这可能是因为这段代码是为Sharepoint 2010编写的),并且会一直给我一个403:FORBIDDEN消息。

有人知道如何使用REST从其中一个列表中删除列表项吗(我不能在javascript之外使用/编辑任何代码!)?

任何帮助都将不胜感激,如果您需要任何信息,请不要犹豫询问。


1
你从哪里得到这个代码片段的?我正在尝试理解 SP.AppContextSite(@target) 部分。 - Christophe
这是我从教程中学到的,并且在过去一直有效,但这不是问题所在。 - Manuel
1个回答

4

这段代码不适用于SharePoint 2010,因为_api是SP 2013中的新功能。

[更新]也许你的代码在SP 2013预览版中可以工作?在SP2013 RTM中,你需要使用:

"Accept": "application/json; odata=verbose"

大家好,我尝试了相同的方法,但仍然收到“403:禁止访问”的消息,来自获取“X-RequestDigest”部分。请问我该怎么办?请分享一下您是如何解决这个问题的。非常感谢! - 夏期劇場
"X-RequestDigest": $("#__REQUESTDIGEST").val() - 使用SharePoint默认主页 - Vaibhav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接