0

憑藉此Javascript:爲什麼Sharepoint的get_current()方法不一致可用?

function upsertPostTravelListItemTravelerInfo1() { 
     var clientContext = SP.ClientContext.get_current(); 
     . . . 

...我有時得到這個ERR(並非總是如此,如通過這種方法插入到列表中的幾次數據(而不是其他時間) );該錯誤信息,如顯示在瀏覽器控制檯(Chrome開發工具)是:

ExecuteOrDelayUntilScriptLoaded(CustomAction, "sp.js"); 

Uncaught TypeError: Cannot read property 'get_current' of undefined 

基於this,我在* .ascx文件試過這種在我的JavaScript頂部

......但是堆起一塊毛球,上面寫着一種明顯的曲折感:「CustomAction not defined

什麼,拉姆齊!正如那句老話所說,我不能贏得失敗。我怎樣才能讓get_current()始終正確執行?

所以,我想這個代碼,而不是:

function upsertPostTravelListItemTravelerInfo1() { 
    var clientContext = new SP.ClientContext(siteUrl); 
    . . . 

...但得到這個錯誤信息,而不是:

Uncaught Sys.ArgumentException: Sys.ArgumentException: Value does not fall within the expected range. 
Parameter name: serverRelativeUrl 

的 「天書」 擺跟隨(轉儲只是一個純d極客可能喜歡),包括以下兩部分,看起來像他們可能有一些連接: if(!SP.ScriptUtility.isUndefined(window._spPageContextInfo)& &!SP.ScriptUtility.isUndefined(window._spFormDigestRefreshInterval) SP.ScriptUtility.isUndefined(window.UpdateFormDigest)){var c = window._spPageContextInfo,d = c.webServerRelativeUrl,e = window._spFormDigestRefreshInterval;};}}}}}}

...和:

if(!a)throw Error.argumentNull("serverRelativeUrl");if(!a.startsWith("/"))throw Error.argument("serverRelativeUrl"); 

任何人能做出這樣正面還是反面?

回答

1

在這行代碼...

ExecuteOrDelayUntilScriptLoaded(CustomAction, "sp.js");

CustomAction參數必須要執行SP庫加載後的JavaScript函數的名稱(給我們可以訪問SharePoint客戶端對象模型中的所有令人愉快的對象)。

你也放棄傳遞一個命名函數到ExecuteOrDelayUntilScriptLoaded,只是堅持內聯函數表達式到像這樣的第一個參數:

ExecuteOrDelayUntilScriptLoaded(function(){ 
    // do something amazing with the client object model here 
}, "sp.js"); 

所以你的最終代碼可能類似於此:

function upsertPostTravelListItemTravelerInfo1() { 
    ExecuteOrDelayUntilScriptLoaded(function(){ 
     var clientContext = SP.ClientContext.get_current(); 
     . . . 

    },"SP.JS"); 
} 
+0

感謝googleplex(由於通貨膨脹,百萬是不夠的)。 –

+1

@ B.ClayShannon不客氣!發現我們實際使用SharePoint的JS客戶端對象模型的可憐靈魂需要粘在一起。 – Thriggle

相關問題