更新sharepoint 2013中另一个网站集中的项目

时间:2017-11-29 14:04:42

标签: json ajax sharepoint-2013

我需要根据此article更新其他网站集中的项目。我的代码是这样的

<script type="text/javascript">
    $(document).ready(function () {
        var otherSiteUrl = "<sitecollectionurl>";
        var listName = "TestList";
        var itemType = GetItemTypeForListName(listName);
        var item = {
            "__metadata": {
                "type": itemType
            },
            "Title": "updated title"
        };
        $.ajax({
            url: otherSiteUrl + "/_api/contextinfo",
            type: "POST", 
            headers: {
                "Accept": "application/json;odata=verbose"
            },
            success: function (contextData) {
                alert(contextData.d.GetContextWebInformation.FormDigestValue);
                $.ajax({
                    url: otherSiteUrl + "/_api/web/lists/getbytitle('" + listName + "')/items?@target='" + otherSiteUrl + "'",
                    method: "POST",
                    contentType: "application/json;odata=verbose",
                    data: JSON.stringify(item),
                    async: false,
                    headers: {
                        "Accept": "application/json;odata=verbose",
                        "X-RequestDigest": contextData.d.GetContextWebInformation.FormDigestValue
                    },
                    success: function (data) {
                        alert('success');
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        alert('error');
                    }
                });
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert('error');
            }
        });
    });
    function GetItemTypeForListName(name) {
        return "SP.Data." + name.charAt(0).toUpperCase() + name.split(" ").join("").slice(1) + "ListItem";
    }
</script>

我用过

  

&#34; X-RequestDigest&#34 ;:   contextData.d.GetContextWebInformation.FormDigestValue

之后我改变了ajax标题,如

  

&#34; X-RequestDigest&#34 ;:   $(&#34; #__ REQUESTDIGEST&#34)。VAL(contextData.d.GetContextWebInformation.FormDigestValue)

两个RequestDigest

我收到了这个错误:

  

无效的JSON。 JSON内容中未识别令牌   之后我将ajax标题改为

如何使用api在其他网站集中成功更新项目?

1 个答案:

答案 0 :(得分:0)

最终,我可以编辑另一个网站集中的项目。我的代码只是变化不大。

首先,最重要的部分是图书馆全名不包含List我使用此网址查找图书馆全名。

[Site url]/_api/web/lists/GetByTitle('List Name')/ListItemEntityTypeFullName

然后我将metadate更改为

  

"__metadata": { "type": 'SP.Data.DocumentsItem' },

第二我添加了

"X-HTTP-Method": "MERGE" , "If-Match": "*"

标题如下:

                headers: {
                    "Accept": "application/json;odata=verbose",
                    "X-RequestDigest": contextData.d.GetContextWebInformation.FormDigestValue,
                    "X-HTTP-Method": "MERGE",
                    "If-Match": "*"
                },