【发布时间】:2018-12-03 21:46:06
【问题描述】:
我正在尝试通过 REST API 遍历 SharePoint 组 ID 的数据集,并处理结果。问题是,我无法访问所有组(这是意料之中的)。在这种情况下,我想将组 ID 记录为“拒绝访问”并继续下一个。
当代码到达我无权访问的第一个组时,系统会提示我输入凭据,正如预期的那样。无论我输入 cred 还是直接单击“取消”,我都会收到预期的 401 错误,并且脚本会退出 -
HTTP401: DENIED - The requested resource requires user authentication.
(XHR)GET - https://{sourceSharePointSite}/_api/Web/SiteGroups/GetById({groupID})/Users
所以,是的,我得到了我无权访问的第一个组的 ID,但是脚本刚刚退出,我真的需要检查其余的组(超过 400 个。不要问)
这是我的代码...
function getMultiGroupMembers(arrGroups){// arrGroups is an object defined earlier
$(arrGroups).each(function(i){
var myId = arrGroups.results[i].Id;
var myTitle = arrGroups.results[i].Title;
log("Group ID: "+myId+" Group Name: "+myTitle+ " Members:");
getData(myId).then(function() {
log( "getMultiGroupMembers success" );
}, function() {
log( "getMultiGroupMembers fail" );
})
});
}
function getData(groupId) {
var url = myUrl + "/_api/Web/SiteGroups/GetById("+groupId+")/Users";
return $.getJSON(url).then(function(data){
log("getGroupMembers() success: " + data);
arrUsers = jsonToCsv(data.d); // convert the JSON object to CSV for exporting
log(JSON.stringify(arrUsers)); // display the results in the log
}, function(err) {
var dfd = $.Deferred();
dfd.reject(err)
return dfd.promise();
})
}
真的不确定我错过了什么。我在 MS Edge 和 Chrome 中尝试过
【问题讨论】:
-
不确定,但我认为 jQuery 会在第一次 fail() 调用时停止所有 ajax 调用。 See this answer for more info。多人写了
$.whenAll()来解决这个问题。
标签: jquery ajax rest sharepoint