我遇到了这段代码,我正在尝试在SP 2010基金会中使用它。加载页面时,出现错误"找不到用户"。我正在使用Jquery 1.10.X和最新的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();
}
}
这是来源
你应该使用 Firebug(Firefox 的插件)来查看已完成的 AJAX 请求。像这样,您可以看到确切的错误消息。
我知道通常您必须在前面传递带有"-1;#"的用户名,以使 SharePoint 将其识别为用户名(例如:"-1;#john_doe@test.com")...也许是原因?!
您可以使用SharepointPlus及其groupMembers函数代替SPServices:
$SP().groupMembers("my group", function(members) {
for (var i=0; i < members.length; i++) console.log(members[i]);
// -> {ID:"1234", Name:"Doe, John", LoginName:"mydomainjohn_doe", Email:"john_doe@rainbow.com"}
});
这个解决方案是使用早期版本的jQuery编写的;元素的"属性"(相对于它的"属性")的标识在某个时候发生了变化。 我有你的确切问题,这就是问题所在:
如果您使用的是jQuery 1.10.X+,则需要将源代码中出现的.attr("value")
替换为.prop("value")
才能正常工作。