1

我想使用 javascript 在我的共享点列表中添加一个新项目。我直接使用了 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在我们的内网站点,所以从你所在的地方无法访问。

4

3 回答 3

0

请添加以下内容:

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

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

于 2013-10-17T09:55:44.213 回答
0

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

提示:您可以使用 Web 控制台在 Firefox 或 Chrome 中调试您的代码,或者您可以为 Firefox 安装像 Firebug 这样的插件。无需使用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)
  }
})
于 2013-10-18T08:29:13.233 回答
0

从所见,您应该将其用作 siteUrl siteUrl = ' http://units.mil.intra/sites/DGHR/h/ ';

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

于 2018-08-23T19:30:47.823 回答