Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 正在尝试发布到SharePoint列表:';SP&x27;是未定义的引用错误:';SP&x27;是未定义的_Jquery_Sharepoint - Fatal编程技术网

Jquery 正在尝试发布到SharePoint列表:';SP&x27;是未定义的引用错误:';SP&x27;是未定义的

Jquery 正在尝试发布到SharePoint列表:';SP&x27;是未定义的引用错误:';SP&x27;是未定义的,jquery,sharepoint,Jquery,Sharepoint,我正在尝试编写一个JS函数,该函数向SharePoint列表发送POST请求,以向该列表添加新的列表项。我在过去使用SP.ClientContext完成了这项工作,并希望继续这样做,因为这是我所知道的在批处理中发送多个插入请求的唯一方法。这是我的密码: /** * Inserts new items to a List * * @params string siteUrl * @params object[] newListItems * @params string listNam

我正在尝试编写一个JS函数,该函数向SharePoint列表发送POST请求,以向该列表添加新的列表项。我在过去使用SP.ClientContext完成了这项工作,并希望继续这样做,因为这是我所知道的在批处理中发送多个插入请求的唯一方法。这是我的密码:

/**
 * Inserts new items to a List
 * 
 * @params string siteUrl
 * @params object[] newListItems
 * @params string listName
 * @params string[] listItemFields
 * 
 * @returns bool
**/
function insertListItems(siteUrl, newListItems, listName, listItemFields) {  
    if(newListItems.length == 0) {
        return false;
    }

    var clientContext = new SP.ClientContext.get_current();
    var olist = clientContext.get_web().get_lists().getByTitle(listName); 

    // Get SP list   
    var itemCreateInfo = new SP.ListItemCreationInformation();

    for(var i = 0; i < newListItems.length; i++) {
        oListItem = olist.addItem(itemCreateInfo);

        for(var j = 0; j < listItemFields.length; j++) {
            oListItem.set_item(listItemFields[j], newListItems[i][listItemFields[j]]);
        }

        oListItem.update();
    }

    clientContext.load(oListItem); 
    clientContext.executeQueryAsync(
        this.successHandler("Items inserted to " + listName), 
        this.errorHandler()
    );  
}
/**
*将新项目插入到列表中
* 
*@params字符串siteUrl
*@params对象[]newListItems
*@params字符串列表名
*@params string[]listItemFields
* 
*@returns bool
**/
函数insertListItems(siteUrl、newListItems、listName、listItemFields){
如果(newListItems.length==0){
返回false;
}
var clientContext=new SP.clientContext.get_current();
var olist=clientContext.get_web().get_lists().getByTitle(listName);
//获取SP列表
var itemCreateInfo=new SP.ListItemCreationInformation();
对于(var i=0;i

我已将此代码移动到一个新的SP站点,但现在当我尝试运行该函数时,我在控制台中得到“jQuery.Deferred exception:'SP'未定义引用错误:'SP'未定义”。一个潜在的问题是,此代码最初是在SP站点中编写的,其中列表位于同一站点中。现在我正在SP站点的子站点中工作,列表位于同一SP站点的不同子站点中(不是我的呼叫:/)。另一个潜在的问题是,在此之前,所有这些都添加到了嵌入到站点中的html中的脚本标记中。现在,我已将JS从该html文件中移出,并使用一个外部脚本标记引用它,尽管我在html文件中使用的其他脚本均未更改。

在引用此脚本文件之前,您是否尝试在html文件中显式引用SP.JS?如果没有,请尝试这样做。如果是,请尝试在执行函数之前使用
ExecuteOrderLayuntlScriptLoaded
让SharePoint加载SP.js:

jQuery(document).ready(function() {
 ExecuteOrDelayUntilScriptLoaded(myfunction, "sp.js");
});
function myfunction() {
// your code goes here
}
若列表位于不同的子网站中,那个么您应该使用它的URL获取特定网站的上下文,以获取它的列表/库等

var URL = [site url]
var clientContext = new SP.ClientContext(URL);
请看看这是否有帮助

编辑

请检查此答案,它提供了许多选项,您可以尝试在函数调用之前加载所需的脚本:

您尝试执行上述代码的是SharePoint Online还是on-Prem?我相信它是在线的,但我不确定如何确认。它看起来像是一个基于云的站点。实际上,我最近已经尝试过这个,而且它似乎是解决方案,因为有多个来源推荐它。然而,我现在遇到了一个问题,我得到了一个错误,上面写着“ExecuteOrderLayUntillScriptLoaded未定义”。你知道这个函数的来源是什么吗?我如何让我的html识别它?事实上SharePoint在页面加载时加载了很多Java脚本,因此可能存在冲突或其他可能导致问题的原因。查看您正在引用的js文件会很有帮助。但是,您可以尝试“\u spBodyOnLoadFunctionNames.push”(“YourFunction”);我正在编辑我的答案以提供一个有用的链接。我的代码中当前唯一的js引用是“//ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js”,以及对包含我编写的函数的文件的引用,其中不包含对其他文件的任何引用。好,在引用脚本文件之前,请尝试在html文件中显式引用sp.js。您是否尝试过使用“\u spBodyOnLoadFunctionNames”?