0

我有一个带有 if 语句的函数,其中包含两个单独的 AJAX 调用操作。根据名为 subjectType 的变量,调用的条件会发生变化。如果我试图获取用户信息,我需要给它 userLoginName。如果我想获取站点信息,我需要给它 webURL。

我可以使用 if 语句来完成此操作,但是否有更好的方法来执行此操作而无需重复大部分行?

var subjectType = if(/*I'll check the value of the drop down to see if a user or site report was asked for*/)?"GetGroupCollectionFromUser":"GetGroupCollectionFromWeb";

function parseSubjectColFromUser(subject){
  var subjectGroups = [];
  if (subjectType){
    $().SPServices({
      operation: "GetGroupCollectionFromUser",
      userLoginName: subject,
      completefunc: function(xData, Status){
        $(xData.responseXML).find("Group").each(function(){
            subjectGroups.push($(this).attr('Name'));
        });
      }
    });
  }else{
    $().SPServices({
      operation: "GetGroupCollectionFromWeb",
      webURL: subject,
      completefunc: function(xData, Status){
        $(xData.responseXML).find("Group").each(function(){
            subjectGroups.push($(this).attr('Name'));
        });
      }
    });
  }
  return subjectGroups;
}
4

1 回答 1

3

应该很容易...我还假设您想在这里使用回调函数,因为您是通过 AJAX 请求执行此操作的。

function parseSubjectColFromUser(subject, myCallback){
    var subjectGroups = [];
    var params = {
        operation: subjectType ? "GetGroupCollectionFromUser" : "GetGroupCollectionFromWeb",
        completefunc: function(xData, Status){
            $(xData.responseXML).find("Group").each(function(){
                subjectGroups.push($(this).attr('Name'));
            });
            myCallback(subjectGroups);
        }
    };

    if (subjectType) {
        params.userLoginName = subject;
    } else {
        params.webURL = subject;
    }

    $().SPServices(params);
}
于 2013-11-06T18:26:20.893 回答