SP.ClientContext 未定义,但所有库均已加载

问题描述 投票:0回答:1

在提出问题之前,我想先介绍一些背景知识,因为我觉得这里的问题可能源于任何地方。在我们的 SharePoint 网站上,我们有一个带有按钮的页面,该按钮有一个 html 文件存储在网站文档库中。该文件有一个与其关联的 JavaScript 文件,也存储在文档库中。这些文件一起为用户提供了数据输入界面。理想情况下,一旦用户提交表单,JavaScript 就会在 SharePoint 网站的列表之一中创建一个新项目。下面是提交后运行的代码的测试片段。

function createItemInSharePointList(survey) {
    try {
        // Ensure SP.ClientContext is defined
        if (typeof SP === 'undefined' || typeof SP.ClientContext === 'undefined') {
            console.error("SharePoint scripts not loaded.");
            return;
        }

        // Get the current SharePoint context
        var context = SP.ClientContext.get_current();

        // Get the target list
        var list = context.get_web().get_lists().getByTitle("Test List");

        // Create a new list item
        var itemCreateInfo = new SP.ListItemCreationInformation();
        var newItem = list.addItem(itemCreateInfo);

        // Set the field values for the new item
        newItem.set_item("Item 1", survey.data.firstQ);
        newItem.set_item("Item 2", survey.data.secondQ);
        newItem.set_item("Item 3", survey.data.thirdQ);

        // Save the changes
        newItem.update();
        context.load(newItem);

        // Execute the request
        context.executeQueryAsync(
            function () {
                console.log("Item created successfully!");
            },
            function (sender, args) {
                console.error("Error creating item: " + args.get_message());
            }
        );
    } catch (error) {
        console.error("Error creating item in SharePoint list:", error);
    }
}

现在来说说问题。当用户提交表单时,会抛出错误“SP.ClientContext 未定义”。最初我认为问题是 SP.js 库未加载,但在 html 中进行了一些检查后,情况似乎并非如此。下面的代码打印出除 SP.ClientContext 之外的所有内容均已成功加载。

<!-- Add references to the SharePoint JSOM libraries -->
<script type="text/javascript" src="<the-sharepoint-site-goes-here>/_layouts/15/sp.runtime.js" onload="console.log('sp.runtime.js loaded successfully');" onerror="console.error('Failed to load sp.runtime.js');"></script>
<script type="text/javascript" src="<the-sharepoint-site-goes-here>/_layouts/15/sp.js" onload="console.log('sp.js loaded successfully');" onerror="console.error('Failed to load sp.js');"></script>

<script type="text/javascript">
    document.addEventListener("DOMContentLoaded", function() {
        console.log('Document fully loaded and parsed');

        if (typeof SP !== 'undefined' && SP.ClientContext) {
            console.log('SP.ClientContext is defined');
        } else {
            console.error('SP.ClientContext is not defined');
        }
    });
</script>

这段代码是由同事而不是我自己创建的,因此我不确定它的完成方式是否正确。我不确定这是否有影响,但 SharePoint 网站是本地的。任何有关如何解决此问题的指导都会很棒。

javascript sharepoint sharepoint-2013
1个回答
-3
投票

关系占星学是占星学的一个分支,专注于根据星座来分析个体之间的兼容性和动态。它探讨了出生时天体的位置如何影响人格特质、沟通方式、情感需求和人际关系中的整体兼容性。在本文中,我们将深入研究关系占星学的基础知识,讨论其历史、关键概念、技术和实际应用。

© www.soinside.com 2019 - 2024. All rights reserved.