在 JavaScript 中向 SharePoint List 添加新项

add new item to sharepoint list in javascript

本文关键字:添加 新项 List SharePoint JavaScript 中向      更新时间:2023-09-26

我想使用 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在我们的内部网站上,所以你无法从你所在的地方访问它。

请添加以下内容:

ExecuteOrDelayUntilScriptLoaded(createListItem() ,"sp.js");

脚本"sp.js"必须在代码运行之前加载

我认为

这是因为siteURL不能包含该页面。所以它应该是http://units.mil.intra/sites/DGHR/h/的(它意味着你网站的根目录)。

提示:您可以使用Web控制台使用Firefox或Chrome调试代码,也可以安装像Firebug这样的插件。无需使用 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)
  }
})

从我所看到的,你应该使用它作为siteUrlsiteUrl = 'http://units.mil.intra/sites/DGHR/h/';

您使用的 siteUrl 会将其定向到不需要的网页。该列表位于 sharepoint 网站中,并且您已经拥有代码中引用的列表名称//var oList = clientContext.get_web().get_lists().getByTitle('TestPostModification');