sharepoint javascript集合未初始化错误

时间:2014-03-24 11:21:53

标签: javascript sharepoint sharepoint-2013 csom

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

详细信息:我希望获得具有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的问题。

1 个答案:

答案 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
  • 添加了错误处理程序