Sharepoint Online将项目发布到包含元素字段的列表

时间:2016-12-01 14:41:31

标签: javascript json sharepoint sharepoint-online

我有一个包含多个字段的Sharepoint列表。我通过执行以下操作使用Javascript to POSt到列表:

$.ajax({
    url: "https://my.domain.com/sites/mysite/_api/web/lists/getbytitle('listname')/items",
    type: "POST",
    contentType: "application/json;odata=verbose",
    data: data,//Example WORKING JSON{ '__metadata': { 'type': 'SP.Data.TestListItem' }, 'title': 'Test' },
    headers: {
        "Accept": "application/json;odata=verbose",
        "Authorization": "Bearer " + token
    },
    success: function (data) {
        console.log("Success");
    },
    error: function (data) {
        console.log("Failure");
    }
});

这非常有效。问题是,当我使用邮递员时,我的一个领域是喜欢:

<d:Sst_Country_mc m:type="Collection(Edm.String)">
   <d:element>Netherlands</d:element>
</d:Sst_Country_mc>

所以我认为我的JSON就是这样:

{"__metadata": {"type": "SP.Data.SST_x0020_Requests_x0020_StagingListItem"},"Title":"Andrew Test 4","Sst_Customer_Name_st":"Customer","Sst_Business_Category_sc":"Finance and Insurance","Sst_Country_mc": {"element":"Spain"},"Sst_Actual_Request_mt":"","Sst_E_Model_1_st":"MODEL","Sst_E_Hardware_Qty_1_ni":"1","Sst_Deadline_Validate_d":"01/01/2017","Sst_Office_sc":"B UK"}

但是这失败并出现以下错误:

发现没有'results'属性的集合。在OData中,每个集合必须表示为具有属性“results”的JSON对象。

这与我的POST方式没有关系,因为当我删除该字段时,它可以正常工作,但是我需要填充这个字段以填充项目创建的工作流程。

我的JSON应如何格式化以处理国家/地区字段?我尝试了一个基本的“Sst_Country_mc”:“西班牙”也没有用。

1 个答案:

答案 0 :(得分:2)

假设Sst_Country_mc是一个选择字段设置为允许多个选择...

在您的REST数据有效内容中,该字段应采用对象的格式,并使用名为“results”的属性,该属性应包含数组字符串值。

"Sst_Country_mc": {
    "results":["Spain","Netherlands"]
}

您的最终数据有效负载可能如下所示:

{
    "__metadata": {"type": "SP.Data.SST_x0020_Requests_x0020_StagingListItem"},
    "Title":"Andrew Test 4",
    "Sst_Customer_Name_st":"Customer",
    "Sst_Business_Category_sc":"Finance and Insurance",
    "Sst_Country_mc": {
        "results":["Spain","Netherlands"]
    },
    "Sst_Actual_Request_mt":"",
    "Sst_E_Model_1_st":"MODEL",
    "Sst_E_Hardware_Qty_1_ni":"1",
    "Sst_Deadline_Validate_d":"01/01/2017",
    "Sst_Office_sc":"B UK"
}