代码之家  ›  专栏  ›  技术社区  ›  acr_scout

Sharepoint Javascript页面加载失败

  •  0
  • acr_scout  · 技术社区  · 7 年前

    我正试图得到一份学校名单 option select 要素我想在页面加载时添加下拉选项,但我没有做正确的事情。如果a直接使用 button 元素,但它在页面加载时不起作用。

    我得到的错误是“对象不支持此操作” 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());
    
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Aaron Prince    7 年前

    你能试试吗

    //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”文件完成加载,然后调用 retrieveListItems() . 但如果没有请求sp.js,它将永远等待。这就是我们打电话的原因 executeFunc 首先请求“sp.js”。然而,它不能保证在继续之前已经加载。它只是将其添加到需要加载的脚本堆栈中,然后运行回调。