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

时间:2015-05-07 12:52:33

标签: jquery angularjs rest sharepoint

我已经把头撞到了墙上几天了。我正在尝试使用Angular js将项添加到Sharepoint中的列表中。

检索项目非常流畅,但添加项目对我不起作用。

代码:

using (MemoryStream ms = new MemoryStream(result.ToArray()))
{
    return Task.FromResult(Convert.ToBase64String(ms.ToArray()));
}

我之前用jQuery Ajax(以类似的方式)完成了这个,但我似乎找不到问题。

脚本与调用的位置在同一站点上运行,因此没有跨域调用。此外,它嵌入了脚本编辑器,因此直接在Sharepoint主页中运行。

有什么建议吗?

1 个答案:

答案 0 :(得分:5)

由于以下原因可能会发生此错误:

1.无效的列表项有效负载

特别是body属性的格式必须具有以下列表项格式:

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

其中

  • Title是列表项的属性
  • __metadata属性是强制性,并指定列表项的实体类型(在您的情况下,此属性缺失,在我的情况下,因为它是一个 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