REST 请求后在控制台中抑制 500 错误

suppress 500 errors in console after REST request

我正在通过 Javascript 进行多次 REST 调用以确定用户是否在多个 Sharepoint 组中。

如果用户不在组中,REST 请求 returns 状态 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();
}

该服务不应使用 500 状态代码进行响应。这意味着服务器上的某些东西出现故障。您无法控制 JavaScript 控制台/浏览器如何解释和解决错误或状态。

另外,从 jQuery 1.5 开始,$.ajax 已经 returns 一个承诺: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)
    })
  }