我通过Javascript进行多次REST调用,以确定用户是否在多个Sharepoint组中。
如果用户不在群组中,则REST
请求会返回状态500
,并会显示"user cannot be found"
消息。
当返回错误时,我用"false"
解决了我的承诺,所以我的功能正常。
但是 - 500
的每个REST响应都会在Javascript控制台中放置error
条目 - 是否可以取消这些条目?
我知道他们不会影响这个功能,但它会使控制台变得混乱。
function IsUserInGroupNumber(permissionRequested,userEmail,groupNumber){
var deferred=$.Deferred();
var url=L_Menu_BaseUrl+"/_api/web/sitegroups("+groupNumber+")/Users/getByEmail('"+userEmail+"')/Email";
$.ajax({
type: 'GET',
url: url,
beforeSend: function (XMLHttpRequest) {
XMLHttpRequest.setRequestHeader("Accept", "application/json; odata=verbose");
},
processData: false,
success: function (data)
{
deferred.resolve({requestedPermission:permissionRequested,groupNumber:groupNumber,hasPermission:true});
},
error: function(data){
//user not found in the group returns a 500 error - but return value of 'false'
deferred.resolve({requestedPermission:permissionRequested,groupNumber:groupNumber,hasPermission:false});
}
});
return deferred.promise();
}
答案 0 :(得分:0)
该服务不应以500状态代码响应。这意味着服务器上的某些内容失败了。您无法控制JavaScript控制台/浏览器如何解释和解决错误或状态。
此外,从jQuery 1.5开始,$.ajax
已经返回一个承诺:http://api.jquery.com/jquery.ajax/
您可以通过以下方式简化代码:
function IsUserInGroupNumber(permissionRequested, userEmail, groupNumber){
return new Promise(resolve, reject) {
$.ajax({
type: 'GET',
url: L_Menu_BaseUrl + "/_api/web/sitegroups(" + groupNumber + ")/Users/getByEmail('" + email + "')/Email",
beforeSend: function (xhr) {
xhr.setRequestHeader("Accept", "application/json; odata=verbose");
},
processData: false,
})
.done(function() {
resolve(true)
})
.fail(function() {
resolve(false)
})
}