我正在创建一个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部分工作…
UPDATE -更新'Title'而不是'ServerRelativeUrl'工作正常。我已经尝试了所有类型的值变化来更新ServerRelativeUrl。
无法更新ServerRelativeUrl属性。一旦创建了站点集合,它就会被修复。您不能通过JSOM/CSOM操作此值。
更改站点集合URL的唯一方法是执行服务器端代码:PowerShell(或其他cmdlet,如Copy-SPSite, Export-SPSite, Move-SPSite等)或SSOM。