2016-07-25 5 views
0
$().SPServices({ 
     operation: "GetGroupCollectionFromUser", 
     userLoginName: $().SPServices.SPGetCurrentUser(), 
     async: false, 
     debug: true, 
     completefunc: function (xData, Status) { 
      console.log($.fn.jquery); 
      console.log(xData.responseXML); 
      console.log(xData.responseXML.xml); 
     } 
    }); 

У меня проблема с SPServices, не работающим на нашем сервере dev. Он отлично работает на prod и тестировании, но не на dev по какой-то причине. Если я запустил код выше, я получу следующее в консоли.SPServices loading, но не работает

{readyState: 0, responseXML не определенно, состояние: 0, его статус: "Нет Транспорт"}

Я читал в Интернете, это может быть проблемой с перекрестными передачами домена поэтому я установить следующее:

$.support.cors = true; 

с, что теперь я получаю следующее:

{readyState: 0, responseXML не определено, состояние: 0, его статуса: "Ошибка: недопустимый аргумент"}

I думаю, это потому, что вызов SPGetCurrentUser всегда просто возвращает пустую строку по какой-то причине вместо пользователя. Кто-нибудь видел это поведение раньше? Каковы общие вещи, которые могут вызвать загрузку SPServices, но не могут выполнять вызовы? Спасибо за помощь.

+0

Поскольку вы не на SharePoint 2007, вы должны рассмотреть возможность использования [JavaScript Object Model] (http://stackoverflow.com/documentation/sharepoint/1316/working-with-javascript-client-object- model-jsom), доступный в SP2010 +. Между этим и службами REST я не видел много вариантов использования для SPServices с 2010 года. – Thriggle

+0

Спасибо за ответ Thriggle, но, к сожалению, CSOM в SP2010 довольно наполовину выпечен, так как вы не можете получить группы SP по имени, только по ID в SP2010. Это проблема, потому что у меня нет возможности гарантировать, что идентификаторы групп, которые меня интересуют, будут одинаковыми на разных серверах (prod, dev, staging и т. Д.). Таким образом, поддерживая, какие идентификаторы релевантны, какие серверы становятся кошмар. Вы полностью правы, хотя 2013 и за пределами CSOM - это фантастика. –

ответ

3

Получается, что это ошибка в SPServices. Похоже, что когда вы используете SPServices на сайте с номером порта, по какой-то причине он дублирует номер порта, и поэтому все ломается. Так как в моем примере выше, я не уточнял webURL и так SPServices использовали текущую сеть, но дублирует порт, как показано здесь:

correct url: http://yourserver:123/sites/yoursite

SPServices: http://yourserver:123123/sites/yoursite

Чтобы исправить это просто указать относительный webURL сайт, как показано в рабочем коде ниже , Надеюсь, это избавит кого-то от обострения.

var site = "/sites/yoursite"; 

$(document).ready(function() { 
    $().SPServices({ 
     operation: "GetGroupCollectionFromUser", 
     userLoginName: $().SPServices.SPGetCurrentUser({ 
          webURL: site 
         }), 
     webURL: site, 
     async: false, 
     completefunc: function (xData, Status) { 
      //Do stuff here 
     } 
    }); 
});