获取400错误请求SharePoint 2013 Rest API

3
我正在创建一个 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,但都没有成功。

1个回答

0

无法更新ServerRelativeUrl属性。一旦网站集合创建,它就是固定的。您无法通过JSOM/CSOM操纵此值。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接