我几天来一直在敲打这个问题,而且似乎没有比以前更接近了。粗略地说,clientContext.executeQueryAsync似乎无法正常工作以在sharepoint中创建多个项目。这是基本设计。我在共享点站点中创建了一个连接到html页面的Web部件。该页面位于该网站的home.aspx上,该内容通过内容页面添加了以下内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" x-undefined="" />
<script type="text/javascript" src="/apps/dre/SiteAssets/Javascript/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="/apps/dre/SiteAssets/Javascript/BatchControl.js"></script>
<script type="text/javascript" src="/apps/dre/SiteAssets/Javascript/jquery.SPServices-2014.01.min.js"></script>
<script type="text/javascript" src="/apps/dre/SiteAssets/Javascript/PageLoader.js"></script>
<script type="text/javascript" src="/apps/dre/SiteAssets/Javascript/BatchExecution.js"></script>
<script type="text/javascript">ExecuteOrDelayUntilScriptLoaded(function(){loadmasterpage();}, "sp.js")</script>
<title>Home Page</title>
</head>
<body>
<div id="batch" style="visibility:hidden">
<button id="batchcontrol" onclick="ExecuteBatchControl()">Create DRE Records</button>
</div>
</body>
</html>
所以这是一个非常简单的HTML。 PageLoader库在加载SP.js后加载按钮。
function loadmasterpage()
{
$(document).ready(function() {
//alert("Here");
$('#batch').css('visibility','visible');
});
}
这是Home.aspx页面中的所有Web内容。它显示了一个简单的HTML按钮。现在出现了令人困惑的谜团。因此,如果单击按钮,BatchControl库将执行以下代码:
function ExecuteBatchControl()
{
createListItem();
}
function createListItem() {
var clientContext = new SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('Discrepancy Report');
for(x=0;x<4;x++){
var itemCreateInfo = new SP.ListItemCreationInformation();
this.oListItem = oList.addItem(itemCreateInfo);
oListItem.set_item('Title', "B2Batch");
oListItem.update();
clientContext.load(oListItem);
}
clientContext.executeQueryAsync(
Function.createDelegate(this, this.onQuerySucceeded),
Function.createDelegate(this, this.onQueryFailed)
);
}
function onQuerySucceeded() {
//alert('Item created: ' + oListItem.get_id());
alert('Success');
// $("input[Title='Caller ID']").val("");
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() +
'\n' + args.get_stackTrace());
}
它创建记录,但onQuerySucceeded函数永远不会执行。如果你删除for ...循环,它将执行,它工作正常。为什么批处理编码不起作用。这几乎就像它存在稳定性问题,但我不能说。似乎没有人知道这里的答案。是因为我将我的html页面连接到Web内容Web部件吗?我完全迷失了,感到困惑。请我帮忙!!!!!!