我正在创建一个 Web 部件,使用 jQuery 调用 REST API 来重命名 SharePoint 子网站。例如,在列表的 EditForm.aspx 上使用自定义按钮时,此功能可以正常工作。在使用 Fiddler 时也可以正常工作。但是,在 Web 部件中使用自定义按钮时,会出现 HTTP 400 错误请求。
以下是我的代码:
<script type="text/javascript" src="https://mysite.mysharepointsite.com/sites/vsdev/SiteAssets/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="https://mysite.mysharepointsite.com/sites/vsdev/SiteAssets/jquery.SPServices-2014.01.min.js"></script>
<script type="text/javascript">
function RenameSubsite()
{
$.ajax({
url: "https://mysite.mysharepointsite.com/sites/vsdev/_api/web/",
type: "POST",
data: JSON.stringify({ '__metadata': { 'type': 'SP.Web' }, 'ServerRelativeUrl': "/vsdev2" }),
headers: {
"accept": "application/json;odata=verbose",
"content-type": "application/json;odata=verbose",
"content-length": "225",
"X-HTTP-Method": "MERGE",
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"IF-MATCH": "*"
},
success: function (return_data, textStatus) {
alert('Successfully Renamed the Site!');
return;
},
error: function (xhr, textStatus, errorThrown) {
alert('Error! - Status: ' + textStatus + ' Desc: ' + errorThrown);
return;
}
});
}
</script>
<p>
<input type="button" value="Rename Subsite to vsdev2" onclick="RenameSubsite()" />
</p>
这是一个非常直观的REST API调用...但是从Web部件中无法工作。
更新 - 更新“标题”而不是“ServerRelativeUrl”可以正常工作。我还尝试了各种类型的值来更新ServerRelativeUrl,但都没有成功。