使用JavaScript和REST从SharePoint列表中删除项目

时间:2016-02-04 07:50:31

标签: javascript rest odata sharepoint-online

我有一些JavaScript(位于/ SiteAssets库中的物理文件)应该删除SharePoint列表中的项目。

我们现有的JavaScript代码可以从列表中检索数据 - 它看起来像这样:

(请注意,由于JavaScript在当前用户的上下文中运行在PDP上,因此我们不需要针对请求的特定访问令牌)

var data = $.ajax({
    url: projSiteUrl + "/_api/lists/getbytitle('<listname>')/items,
    type: "GET",
    dataType: "json",
    async: false,
    headers: {
        Accept: "application/json;odata=verbose"  
    }       
});

所以我认为我可以编写类似的代码来再次从列表中删除一个项目。我在https://msdn.microsoft.com/en-us/library/office/jj164022.aspx#HTTPOps上读到SharePoint的REST端点支持&#34; normal&#34; REST动词,所以我用DELETE HTTP动词编写了这个。

var restUrl = spSiteUrl + '/_api/web/lists/GetByTitle(\'' + listTitle + '\')/items(' + itemId + ')';
jQuery.ajax({
    url: restUrl,
    type: "DELETE",
    headers: {
        Accept: "application/json;odata=verbose"  
    }       
})

但我在请求时收到403 (FORBIDDEN)

我想问题是:假设支持DELETE动词我错了吗?

谢谢: - )

1 个答案:

答案 0 :(得分:4)

好的,显然我在做修改时需要摘要 - 但不是简单的数据检索。

如果我将代码更改为

jQuery.ajax({
    url: restUrl,
    type: "DELETE",
    headers: {
        Accept: "application/json;odata=verbose",
        "X-RequestDigest": $("#__REQUESTDIGEST").val(),
        "IF-MATCH": "*"
    }       
}).

...它使用REST HTTP动词DELETE处理一个简单的AJAX请求: - )