这个问题是我发现的一个扩展点(它没有特殊字符): 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));
}
});
答案 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));
}
});