Sharepoint Angular REST 添加项目产生 400(错误请求)

问题描述 投票:0回答:1

这几天我一直在用头撞墙。我正在尝试使用 Angular js 将项目添加到 Sharepoint 中的列表中。

检索项目很顺利,但添加项目对我来说不起作用。

代码:

spApp.controller('spListCtrl', function($scope, $http, $q) {
    $http.post("https://tools.site.com/_api/lists/getbytitle('PersonalFilter')/items", {
        'Title': 'TEST'
    }, {
        headers: {
            'Accept': 'application/json; odata=verbose',
            'X-RequestDigest': $("#__REQUESTDIGEST").val()
        }
    }).success(function(data, status, headers, config) {
        console.log("YES");
    }).error(function(data, status, headers, config) {});
});

我之前已经使用 jQuery Ajax (以类似的方式)完成了此操作,但我似乎无法找到问题所在。

脚本在与调用位置相同的站点上运行,因此不会发生跨域调用。此外,它嵌入在脚本编辑器中,因此可以直接在 Sharepoint 母版页内运行。

有什么建议吗?

jquery angularjs rest sharepoint
1个回答
6
投票

出现此错误可能是由于以下原因:

1.列表项有效负载无效

特别是

body
属性的格式对于列表项必须具有以下格式:

$http({
          data: { Title : 'John Doe', __metadata:  {type: 'SP.Data.ContactsListItem' }},  
          //remaining parameters are omitted for clarity 
      });

哪里

  • Title
    是列表项的属性
  • __metadata
    属性是 mandatory 并指定列表项的实体类型(在您的情况下,此属性丢失,在我的情况下,因为它是
    Contacts
    列表,值为
    SP.Data.ContactsListItem
    )参见关于 下面的列表项实体类型部分描述了如何确定实体 列表项的类型。

2。缺少标题

Content-Type

Content-Type
必须指定,例如:

$http({
         headers: {
                    "Content-Type" : "application/json;odata=verbose",
                    //...                 
                  }          
 });

以下示例演示如何使用 SharePoint 2013/Online REST 创建列表项。

示例

$scope.createContact = function() {

      var endpointUrl = "https://contoso.sharepoint.com/_api/web/lists/getByTitle('Contacts')/items";
      var itemPayload = { Title : 'John Doe', __metadata:  {type: 'SP.Data.ContactsListItem' }};

      $http({
               method: "POST",
               url : endpointUrl,
               data: itemPayload,  
               headers: {
                           "Content-Type" : "application/json;odata=verbose",
                           "Accept": "application/json;odata=verbose",
                           "X-RequestDigest": $("#__REQUESTDIGEST").val() 
                        }          
      }).success(function (data, status, headers, config) {  
          //Process List Item
          var contact = data.d;
      }).error(function (data, status, headers, config) {  
          //An error occured...
      });  

 }

关于列表项实体类型

以下查询允许确定列表项的实体类型:

端点 Uri:

https://contoso.sharepoint.com/_api/web/lists/getByTitle('<list title>')?$select=ListItemEntityTypeFullName

© www.soinside.com 2019 - 2024. All rights reserved.