我想使用javascript将新项目添加到我的sharepoint列表中。我直接使用MSDN中的代码,但它不起作用。我认为问题是我声明的siteUrl,因为当我设置这样的警报时:
var siteUrl = 'http://units.mil.intra/sites/DGHR/h/default.aspx';
function createListItem() {
alert('in function ');
var clientContext = new SP.ClientContext(siteUrl);
alert('before oList');
var oList = clientContext.get_web().get_lists().getByTitle('TestPostModification');
alert('after oList');
var itemCreateInfo = new SP.ListItemCreationInformation();
this.oListItem = oList.addItem(itemCreateInfo);
oListItem.set_item('Title', 'Item from de Hrnode!');
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());
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
我收到了第一个警报,但我没有得到alert('before oList');
所以我觉得有一个问题:
var clientContext = new SP.ClientContext(siteUrl);
有人可以帮助我吗?
ps:siteUrl位于我们的Intranet网站上,因此您无法从您所在的位置访问它。
答案 0 :(得分:0)
请添加以下内容:
ExecuteOrDelayUntilScriptLoaded(createListItem() ,"sp.js");
在代码运行之前必须加载脚本“sp.js”
答案 1 :(得分:0)
我认为这是因为siteURL
不得包含该页面。所以应该是http://units.mil.intra/sites/DGHR/h/
(这意味着你网站的根目录)。
提示:您可以使用Web控制台通过Firefox或Chrome调试代码,也可以安装Firebug for Firefox等插件。无需使用alert()
,console.log()
可提供更多有用的信息。
此外,这样做的本地方式很难使用而不是“漂亮”。如果使用jQuery不是问题,那么我建议使用第三个库,如SPServices或SharepointPlus。例如,使用SharepointPlus,您的代码将变为:
// if your code runs somewhere under this website, then you don't need to provide the URL
var siteUrl = 'http://units.mil.intra/sites/DGHR/h/';
$SP().list("TestPostModification", siteUrl).add({Title:"Item from de Hrnode!"}, {
success:function(items) {
if (items.length === 1) alert("Item created: "+items[0].ID)
},
error:function(items) {
if (items.length > 0) alert("Request failed: "+items[0].errorMessage)
}
})
答案 2 :(得分:0)
从所见,您应该将此用作siteUrl siteUrl ='http://units.mil.intra/sites/DGHR/h/';
您使用的siteUrl会将其定向到不需要的网页。 该列表位于共享站点中,并且您已经在代码中引用了列表的名称// var oList = clientContext.get_web()。get_lists()。getByTitle('TestPostModification');