2013-09-26 30 views
0

我遇到了這個代碼,我試圖在SP 2010 Foundation中使用它。當我加載頁面時,出現「用戶未找到」錯誤。我正在使用Jquery 1.10.X和最新的SPServices版本。我認爲它與「userLoginName」有關,但我很難搞清楚它。嘗試獲取使用SPServices的用戶的組列表

$(document).ready(function() { 
    //Populate the users pick list 
    var strHTMLSiteUsers = ""; 
    $().SPServices({ 
     operation: "GetUserCollectionFromSite", 
     async: false, 
     completefunc: function(xData, Status) { 
     $(xData.responseXML).find("User").each(function() { 
      strHTMLSiteUsers += "<option value='" + $(this).attr("LoginName") + "'>" + $(this).attr("Name") + "</option>"; 
     }); 
     $("#my_SiteUsers").append(strHTMLSiteUsers); 
     } 
    }); 
    RefreshGroupLists(); 
}); 

function RefreshGroupLists(){ 
    var strHTMLAvailable = ""; 
    var strHTMLAssigned = ""; 
    var arrOptionsAssigned = new Array(); 
    var intOpts = 0; 
    var booMatch; 
    var booErr = "false"; 

    $("#my_SPGroupsAssigned").html(""); 
    $("#my_SPGroupsAvailable").html(""); 

    if($("#my_SiteUsers").attr("value") == 0){ 
    alert("You must select a user"); 
    return; 
    } 

    //Populate the Groups Assigned 
    $().SPServices({ 
     operation: "GetGroupCollectionFromUser", 
     userLoginName: $("#my_SiteUsers").attr("value"), 
     async: false, 
     completefunc: function(xData, Status) { 
     $(xData.responseXML).find("errorstring").each(function() { 
      alert("User not found"); 
      booErr = "true"; 
      return; 
     }); 
     $(xData.responseXML).find("Group").each(function() { 
      strHTMLAvailable += "<option value='" + $(this).attr("Name") + "'>" + $(this).attr("Name") + "</option>"; 
      arrOptionsAssigned[intOpts] = $(this).attr("Name"); 
      intOpts = intOpts + 1; 
     }); 
     $("#my_SPGroupsAssigned").append(strHTMLAvailable); 
     } 
    }); 

    //Populate available site groups 
    if(booErr == "false"){ 
    $().SPServices({ 
     operation: "GetGroupCollectionFromSite", 
     async: false, 
     completefunc: function(xData, Status) { 
      $(xData.responseXML).find("Group").each(function() { 
      booMatch = "false"; 
      for (var i=0;i<=arrOptionsAssigned.length;i++){ 
       if($(this).attr("Name") == arrOptionsAssigned[i]){ 
       booMatch = "true"; 
       break; 
       } 
      } 
      if(booMatch == "false"){ 
       strHTMLAssigned += "<option value='" + $(this).attr("Name") + "'>" + $(this).attr("Name") + "</option>"; 
      } 
      }); 
      $("#my_SPGroupsAvailable").append(strHTMLAssigned); 
     } 
    }); 
    } 
} 

function AddGroupsToUser(){ 
    var i; 

    if($("#my_SiteUsers").attr("value") == 0){ 
    alert("You must select a user"); 
    return; 
    } 

    if($("#my_SPGroupsAvailable").val() == null){ 
    alert("You haven't selected any groups to add"); 
    return; 
    } 
    else{ 
    var arrGroups = $("#my_SPGroupsAvailable").val(); 
    for (i=0;i<arrGroups.length;i++){ 
     $().SPServices({ 
      operation: "AddUserToGroup", 
      groupName: arrGroups[i], 
      userLoginName: $("#my_SiteUsers").attr("value"), 
      async: false, 
      completefunc: null 
     }); 
    } 
    RefreshGroupLists(); 
    } 
} 

function RemoveGroupsFromUser(){ 
    var i 

    if($("#my_SiteUsers").attr("value") == 0){ 
    alert("You must select a user"); 
    return; 
    } 

    if($("#my_SPGroupsAssigned").val() == null){ 
    alert("You haven't selected any groups to remove"); 
    return; 
    } 
    else{ 
    var arrGroups = $("#my_SPGroupsAssigned").val(); 
    for (i=0;i<arrGroups.length;i++){ 
     $().SPServices({ 
      operation: "RemoveUserFromGroup", 
      groupName: arrGroups[i], 
      userLoginName: $("#my_SiteUsers").attr("value"), 
      async: false, 
      completefunc: null 
     }); 
    } 
    RefreshGroupLists(); 
    } 
} 

這是source

回答

0

你應該使用Firebug(火狐插件的),看那個完成的AJAX請求。就像那樣你可以看到確切的錯誤信息。

我知道,通常你必須在它前面傳遞一個用戶名「-1;#」,以使Sharepoint將其識別爲用戶名(例如:「-1; #[email protected]」) ...也許這是原因?!

相反SPServices你可以使用SharepointPlus及其groupMembers功能:

$SP().groupMembers("my group", function(members) { 
    for (var i=0; i < members.length; i++) console.log(members[i]); 
    // -> {ID:"1234", Name:"Doe, John", LoginName:"mydomain\john_doe", Email:"[email protected]"} 
}); 
+0

就迅速看着SharePointPlus可用的方法,將不使用「羣組」的方法是仔細相當於GetGroupCollectionFromUser – Batman

+0

我成功地管理獲得$ SP()。usergroups給我一個選定用戶所屬用戶的列表。現在,我只需要弄清楚如何將它與上面的代碼合併,以使其工作。現在它只是寫一個控制檯日誌:( – Batman

+0

而不是使用控制檯,你可以創建一些HTML代碼,並將其插入到您的頁面...我不明白這裏有什麼困難?! – AymKdn

相關問題