我需要根据此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>
我用过
之后我改变了ajax标题,如&#34; X-RequestDigest&#34 ;: contextData.d.GetContextWebInformation.FormDigestValue
两个&#34; X-RequestDigest&#34 ;: $(&#34; #__ REQUESTDIGEST&#34)。VAL(contextData.d.GetContextWebInformation.FormDigestValue)
RequestDigest
的我收到了这个错误:
无效的JSON。 JSON内容中未识别令牌 之后我将ajax标题改为
如何使用api在其他网站集中成功更新项目?
答案 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": "*" },