我已经把头撞到了墙上几天了。我正在尝试使用Angular js将项添加到Sharepoint中的列表中。
检索项目非常流畅,但添加项目对我不起作用。
代码:
using (MemoryStream ms = new MemoryStream(result.ToArray()))
{
return Task.FromResult(Convert.ToBase64String(ms.ToArray()));
}
我之前用jQuery Ajax(以类似的方式)完成了这个,但我似乎找不到问题。
脚本与调用的位置在同一站点上运行,因此没有跨域调用。此外,它嵌入了脚本编辑器,因此直接在Sharepoint主页中运行。
有什么建议吗?
答案 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