0

我有一个奇怪的问题。它完全随机发生,我不知道它为什么以及在什么情况下发生。

详细信息:我想获取具有该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>');
          }
    });

谢谢,如果有人知道并分享有关此的任何信息。我也看到了这个问题。

4

1 回答 1

1

您可以尝试一种稍微不同的加载组用户的方法。由于 Group 客户端对象公开了Users属性,因此您可以使用初始化的 Users 属性加载 Group,如下所示:

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
于 2014-03-24T13:24:38.680 回答