2017-12-20 4 views
0

optionselect要素に入れる学校のリストを取得しようとしています。ページが読み込まれたときにドロップダウンオプションを追加したいが、私は何か正しいことをしていない。以下のコードは、button要素で直接呼び出すが、ページの読み込みでは機能しない場合に機能します。ライン上のSharepoint Javascriptでページの読み込みに失敗する

私が手にエラーが "オブジェクトはこのアクションをサポートしていない" であるvar clientContext = new SP.ClientContext(siteUrl);

var siteUrl= '/learning/schools'; 

window.load = init(); 

    function init(){ 

    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', retrieveListItems()); 
} 

function retrieveListItems() { 

    var clientContext = new SP.ClientContext(siteUrl); 

    var oList = clientContext.get_web().get_lists().getByTitle('Schools'); 

    var camlQuery = new SP.CamlQuery(); 

    camlQuery.set_viewXml('<View><Query><Where><Geq><FieldRef Name=\'ID\'/>' + 
     '<Value Type=\'Number\'>1</Value></Geq></Where></Query><RowLimit>10</RowLimit></View>'); 

    this.collListItem = oList.getItems(camlQuery); 

    clientContext.load(collListItem); 

    clientContext.executeQueryAsync(
      Function.createDelegate(this, this.onQuerySucceeded), 
      Function.createDelegate(this, this.onQueryFailed));   

} 

function onQuerySucceeded(sender, args) { 

    var listItemInfo = ''; 

    var listItemEnumerator = collListItem.getEnumerator(); 

    var schoolCodes = document.getElementById('classSchoolList'); 

    while (listItemEnumerator.moveNext()) { 
     var oListItem = listItemEnumerator.get_current(); 
     var schoolOption = document.createElement('option'); 
     schoolOption.value = oListItem.get_item('Title'); 
     schoolOption.text = oListItem.get_item('Title') + " : " + oListItem.get_item('School'); 
     schoolCodes.add(schoolOption); 
    } 


} 

function onQueryFailed(sender, args) { 

    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 

} 
+0

コードが正しいようです。次の行のようにカッコで囲まずに関数名を 'retrieveListItems'として試してみてください。' SP.SOD.executeFunc( 'sp.js'、 'SP.ClientContext'、retrieveListItems); '。 これを参照してください:https://sharepoint.stackexchange.com/questions/79010/sharepoint-com-sp-clientcontextsiteurl-object-doesnt-support-this-action –

+0

@rohit私はそれを試みましたが、それはまだ同じ時点で失敗します。ページの読み込み。しかし、私はクリックして、それは正常に動作するボタンがあります。 –

答えて

1

あなたは

//load the sp.js script and execute the init method 
//no guarantee sp.js will be fully loaded before init() runs. 
SP.SOD.executeFunc('sp.js', init()); 

function init(){ 
    //ensure script is fully loaded, then execute retrieveListItems() 
    ExecuteOrDelayUntilScriptLoaded(retrieveListItems(), 'sp.js'); 
} 

または代わりに、

SP.SOD.executeFunc('sp.js', null, function(){ 
    ExecuteOrDelayUntilScriptLoaded(retrieveListItems(), 'sp.js'); 
}); 

ExecuteOrDelayUntilScriptLoaded試みることができますを呼び出す前に 'sp.js'ファイルのロードが完了するのを待ちます。しかし、「sp.js」が要求されていない場合、それは永遠に待つでしょう。そのため、まずexecuteFuncに 'sp.js'をリクエストする必要があります。それでも、移動する前にロードされていることを保証するものではありません。ロードする必要があるスクリプトのスタックにそれを追加してコールバックを実行するだけです。

関連する問題