SharePoint REST查询SP.UserProfiles.PeopleManager特殊字符

时间:2016-08-05 16:30:06

标签: javascript sharepoint-2013

这个问题是我发现的一个扩展点(它没有特殊字符): SharePoint REST query SP.UserProfiles.PeopleManager

基本上我遇到的问题是查询无法使用特殊字符准确回复accountName。具体而言,此示例的姓氏为'。查询要么不返回结果,要么是400 Bad Request。

在代码示例中,我使用了encodeURIComponent(),但我也尝试了escape()和字符串转义"\"

此时我假设它在MS方面存在错误,但我找不到任何支持文档,也没有找到成功完成此代码的任何代码示例。

var siteUrl = _spPageContextInfo.siteAbsoluteUrl;
var accountName = "Domain\\LoginFirstName_O'AccountLastName";
$.ajax({
    url: siteUrl + "/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)?@v='" + encodeURIComponent(accountName) + "'",
    method: "GET",
    headers: { "Accept": "application/json; odata=verbose" },
    success: function (data) {

             console.log(data);     

    },
    error: function (data) {
        console.log(JSON.stringify(data));
    }
});

1 个答案:

答案 0 :(得分:0)

显然我比答案更接近答案,但我忽略了它。基本上,SharePoint的转发方式在这种情况下起作用。我需要添加代码以将'替换为''

我还发现无论encodeURIComponent()如何,请求都会对其进行编码,因此对于此请求,我选择将其删除。如果你想使用或不使用它,由你决定。

这是我的最终代码段:

var siteUrl = _spPageContextInfo.siteAbsoluteUrl;
var accountName = "Domain\\LoginFirstName_O'AccountLastName";
accountName = accountName.replace("'","''");

$.ajax({
url: siteUrl + "/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)?@v='" + accountName + "'",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {

         console.log(data);     

},
error: function (data) {
    console.log(JSON.stringify(data));
}
});