我有一个奇怪的问题。它完全随机发生,我不知道为什么以及它来自何种情况。
详细信息:我希望获得具有executeQueryAsync
功能的组的成员。在回调中,userEnumerator = users.getEnumerator();
行抛出此异常:
该集合尚未初始化。尚未请求或请求尚未执行。可能需要明确要求。
没有其他异步代码在运行。我不知道这是否重要,但只有在页面加载时才会发生这种情况。
我使用XML Viewer
webpart插入此代码。
var ctx = SP.ClientContext.get_current(),
groups = ctx.get_web().get_siteGroups(),
group = groups.getById(6),
users = group.get_users();
ctx.load(group);
ctx.load(users);
ctx.executeQueryAsync(function () {
var userEnumerator,
user;
$("#members-select").empty();
userEnumerator = users.getEnumerator();
while (userEnumerator.moveNext()) {
user = userEnumerator.get_current();
$("#members-select").append('<option>' + user.get_title() + '</option>');
}
});
谢谢,如果有人知道并分享有关此信息的任何信息。 我也看到了this的问题。
答案 0 :(得分:1)
您可以尝试稍微不同的加载组用户的方法。 由于组客户端对象公开Users属性,您可以加载Group with Users属性,初始化如下:
ctx.load(group,'Users');
示例:
(function(){
var ctx = SP.ClientContext.get_current();
var groups = ctx.get_web().get_siteGroups();
var group = groups.getById(6);
ctx.load(group,'Users');
ctx.executeQueryAsync(function () {
var users = group.get_users();
var e = users.getEnumerator();
while (e.moveNext()) {
var user = e.get_current();
console.log(user.get_title());
}
},
function(sender,args){
console.log(args.get_message());
}
);
})();
关键点:
SP.ClientContext.executeQueryAsync