带有SharePoint 2013 REST端点的Javascript“INSERT”到列表中?

时间:2015-04-14 12:07:26

标签: javascript rest sharepoint-2013 crud sharepoint-list

以下是我要使用的内容:

  • SharePoint 2013
  • 的Javascript
  • REST端点
  • SharePoint列表(名为:"公告")
  • WebSite (名为:" example.com")

参考文献:

非常简单:

  • 如何在列表中插入新项目(行)?

我试过了:

$.ajax({
    url: "https://example.com/_api/web/lists/getbytitle('Announcements')/items",
    type: "POST",
    contentType: "application/json;odata=verbose",
    data: JSON.stringify( { '__metadata': { 'type': 'SP.Data.AnnouncementListItem' }, "Title": "New Announcement!" } ),
    headers: {
        "Accept": "application/json;odata=verbose",
        "Authorization": "Bearer " + accessToken
        "X-RequestDigest": form digest value,
        "IF-MATCH": etag,
    },
    success: function (data) {
        console.log(data);
    },
    error: function (data) {
        console.log(data);
    }
});

然后我知道很多事情都出错了,特别是在headers部分。但这是什么意思:

  • Authorization
  • accessToken
  • X-RequestDigest
  • IF-MATCH

..然后如何获取这些值(使用JavaScript)?那样:

  • 那里的确切字段是什么?
  • 如何/从何处获取这些值?

我仍然找不到一个关于正确执行此Update / Insert的简单而完整的示例。

2 个答案:

答案 0 :(得分:1)

因此我有两种方法可以将项目提交到列表,即jQuery库SPServices和REST API。 SPServices确实有很好的文档记录here。使用REST API也更快更容易!

function createListItem(itemProperties, success, failure) {
  $.ajax({
    url: "https://example.com/_vti_bin/listdata.svc/Announcements",
    type: "POST",
    processData: false,
    contentType: "application/json;odata=verbose",
    data: JSON.stringify(itemProperties),
    headers: {
      "Accept": "application/json;odata=verbose"
    },
    success: function(data) {
      success(data.d);
    },
    error: function(data) {
      // failure(data.responseJSON.error);
      alert("error");
    }
  });
}

我上面做的第一件事就是创建一个函数,只要你想创建一个新的列表项,就可以调用它。参数itemProperties可以填充您需要的字段,请参见下文。

var Title = "Title";
var Answer = "Answer";
var userid = _spPageContextInfo.userId;

var taskProperties = {
  'Title': Title,
  'Answer': Answer,
  'UserId': userid
};

然后我们要做的就是用我们刚刚声明的新变量调用这个函数。

createListItem(taskProperties, function(task) {
    alert("Thank you for your input!");

  },
  function(error) {
    console.log(JSON.stringify(error));
  }
);

答案 1 :(得分:1)

实际上你在上一篇评论中发布的jsfiddle不是REST。您只需使用SharePoint客户端对象模型。在REST API模型下面找到我希望它可以工作

var cat = {
    "__metadata": { "type": ItemType },
    "Title": "GenIT-Issue",
}
$.ajax({
    url: _spPageContextInfo.siteAbsoluteUrl + "/_api/web/lists/getbytitle('Tickets')/items",
    type: "POST",
    contentType: "application/json;odata=verbose",
    data: JSON.stringify(cat),
    headers: {
        "Accept": "application/json;odata=verbose",
        "X-RequestDigest": $("#__REQUESTDIGEST").val()
    },
    success: function (data) {

    },
    error: function (data) {
    }
});

我在SharePoint页面中运行此代码,因此无需身份验证。它将在当前用户权限上运行