获得400个错误请求SharePoint 2013 Rest API

时间:2014-05-09 17:31:32

标签: jquery ajax rest sharepoint

我正在创建一个使用jQuery进行REST API调用以重命名SharePoint子网站的Web部件。例如,当在列表上使用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部件中运行..

更新 - 更新&#39;标题&#39;而不是&#39; ServerRelativeUrl&#39;工作良好。我已经尝试了所有类型的值变体来更新ServerRelativeUrl。

1 个答案:

答案 0 :(得分:0)

无法更新 ServerRelativeUrl 属性。一旦创建了网站集,它就会被修复。您无法通过JSOM / CSOM操作此值。

更改网站集URL的唯一方法是执行服务器端代码:PowerShell(或其他cmdlet,如Copy-SPSite,Export-SPSite,Move-SPSite等)或SSOM