2015-04-08 2 views
0

Моя функция проверки разрешений в списке элементов в Sharepoint, похоже, не работает. Он помещается в файл aspx на сайте Sharepoint 2010. При попытке запустить это сообщение появляется ниже. Кто-нибудь знает, как это должно быть сделано? Я нашел множество примеров для одной и той же функции в C#, но не могу найти что-либо в Javascript. Благодаря !Как получить права доступа к элементу Sharepoint 2010 с помощью Javascript Client Object Model

function checkPermissions(){ 
var ctx = new SP.ClientContext.get_current(); 
var oBooksList=ctx.get_web().get_lists().getByTitle('test Repository'); 
var listItem=oBooksList.getItemById(2); 


//ctx.load(listItem.get_roleAssignments()); 
ctx.load(listItem, 'RoleAssignments'); 
ctx.executeQueryAsync(
    Function.createDelegate(this, this.onSucceededCallback), 
    Function.createDelegate(this, this.onFailedCallback)); 

} 
function onSucceededCallback(sender, args){ 
    alert('it worked'); 
} 

Сообщение об ошибке:

SCRIPT5007: Unable to get value of the property 'apply': object is null or undefined 
+0

Единственное, что я могу видеть ... (если не него это упущение) заключается в том, что в коде отсутствует функция 'onFailedCallback' .. Это может привести к тому, что аналогично тому, как он называет 'Function.prototype.apply' или' onFailedCallback.apply' после завершения. –

+0

Спасибо, Майкл, он работает после добавления функции onFailedCallback. Однако мне трудно получить данные обратного вызова, поэтому я не могу проверить, верны ли возвращенные данные. Какие-нибудь идеи? – Gumis

+0

Если я правильно помню, что ответный вызов fail имеет только один аргумент, и это ошибка. Я думаю, что error.get_message() имеет в нем сообщение об ошибке –

ответ

2

Что-то, как это должно помочь ....

UNTESTED

function checkPermissions(){ 
    var ctx = new SP.ClientContext.get_current(); 
    var oBooksList = ctx.get_web().get_lists().getByTitle('test Repository'); 
    var listItem = oBooksList.getItemById(2); 
    var roles = listItem.get_roleAssignments(); 

    ctx.load(roles); 
    ctx.executeQueryAsync(
     // success 
     function (sender, args){ 
      var roleInfo = ''; 
      var roleEnumerator = roles.getEnumerator(); 
      // enumerate the roles 
      while (roleEnumerator.moveNext()) { 
       var role = roleEnumerator.get_current(); 
       var principal = role.get_member(); 
       // get the principal 
       ctx.load(principal); 
       ctx.executeQueryAsync(
        // success 
        function (sender, args){ 
         // alert the title 
         alert(principal.get_title()); 
        }, 
        // failure 
        function (sender, args){ 
         alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
        }); 
      } 
     }, 
     // failure 
     function (sender, args){ 
      alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
     }); 

} 
+0

Спасибо, Майкл, который отлично работал – Gumis

 Смежные вопросы

  • Нет связанных вопросов^_^