2016-07-25 168 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 
     } 
    }); 
});