这个问题是我作为起点发现的这个问题的延伸(无需特殊字符即可工作):SharePoint REST 查询 SP.UserProfiles.PeopleManager https://stackoverflow.com/questions/23340299/sharepoint-rest-query-sp-userprofiles-peoplemanager
基本上我遇到的问题是查询没有准确响应accountName
带有特殊字符。具体来说,一个'
在此示例中的姓氏中。该查询要么不返回结果,要么是 400 错误请求。
在我使用的代码示例中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));
}
});
显然我比我想象的更接近答案,但我忽略了它。基本上,SharePoint 的转义方式在这种情况下是有效的。我需要添加代码来替换单个'
with ''
.
我还发现请求对其进行编码,无论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));
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)