2016-07-25 160 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无法在我们的开发服务器上工作的问题。它在prod和测试中工作正常,但由于某些原因不适用于dev。如果我运行上面的代码,我在控制台中得到以下内容。SPServices加载但无法正常工作

{readyState的:0,responseXML的:不确定,状态:0,状态文本: “没有交通”}

我看网上这可能是与跨域传输问题,所以我设置如下:

$.support.cors = true; 

有了,我现在得到如下:

{readyState的:0,responseXML的:不确定,状态:0,状态文本: “错误:无效参数”}

我认为这是因为SPGetCurrentUser调用总是由于某种原因而不是用户返回空字符串。有没有人见过这种行为?什么是可能导致SPServices加载但不能执行调用的常见事情?谢谢您的帮助。

+0

既然你不是在SharePoint 2007中,您应考虑使用[JavaScript对象模型(http://stackoverflow.com/documentation/sharepoint/1316/working-with-javascript-client-object- model-jsom)在SP2010 +中提供。在这和REST服务之间,自2010年以来我没有看到许多SPServices的用例。 – Thriggle

+0

感谢Thriggle的回复,但遗憾的是SP2010中的CSOM相当一半,因为您无法通过名称检索SP组,只能通过SP2010中的ID检索SP组。这是一个问题,因为我没有办法保证我感兴趣的组ID在我们的不同服务器(prod,dev,staging等)中是相同的。因此,维护哪些ID与哪些服务器成为恶梦。尽管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 
     } 
    }); 
}); 
相关问题