在javascript中将新项添加到sharepoint列表

时间:2013-10-17 09:46:34

标签: javascript sharepoint

我想使用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网站上,因此您无法从您所在的位置访问它。

3 个答案:

答案 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不是问题,那么我建议使用第三个库,如SPServicesSharepointPlus。例如,使用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');