首页 > 解决方案 > 从 JSON 阅读器读取时发现意外的“StartObject”节点。需要一个“PrimitiveValue”节点

问题描述

我正在使用 rest API 调用将项目添加到 Sharepoint 列表中的“电子邮件”人员选择器列。但由于此错误,我无法添加它。

我已经尝试在没有电子邮件的情况下保留有效负载,但它仍然无法解决它

代码是不言自明的,但如果您愿意,我会给您一些见解

setPeoplesColumn: function()
{
    console.log("user id is "+addressBookListRestService.UserID);
    var item=
    {
        "__metadata": 
        {
           "type": 'SP.Data.Address_x0020_BookListItem'
        },   
        "Title": 'Some Dude',
        'EmailId' : 
        {
            "results" : [_spPageContextInfo.userId] 
        }
    };
    $.ajax
    ({  
       url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetByTitle('Address Book')/items",  
       type: "POST",  
       headers: 
       {  
            "accept": addressBookListRestService.acceptHeaderValue,  
            "X-RequestDigest": addressBookListRestService.requestDigestHeaderValue,  
            "content-Type": addressBookListRestService.contentTypeHeaderValue  
        },  
        data:  JSON.stringify(item),
        success: function(data) 
        {  
            console.log("success is "+(data.d.result));  
            console.log("ID is "+JSON.stringify(data.d.results));
        },  
        error: function(error) {  
            console.log("failure is "+JSON.stringify(error));  
        }  
    });//end of ajax function 
},

标签: javascriptrestsharepoint-online

解决方案


错误应该是json数据格式。

我的测试脚本基于您的演示(电子邮件人员字段允许多项选择)。

<script type="text/javascript">
        function setPeoplesColumn() {
            console.log("user id is " + _spPageContextInfo.userId);
            var item =
            {
                "__metadata":
                {
                    "type": 'SP.Data.Address_x0020_BookListItem'
                },
                "Title": 'Some Dude',
                'EmailId':
                {
                    "results": [_spPageContextInfo.userId]
                }
            };
            $.ajax
                ({
                    url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetByTitle('Address Book')/items",
                    type: "POST",
                    headers:
                    {
                        "Accept": "application/json;odata=verbose",
                        "Content-Type": "application/json;odata=verbose",
                        "X-RequestDigest": $("#__REQUESTDIGEST").val()
                    },
                    data: JSON.stringify(item),
                    success: function (data) {
                        console.log("success is " + (data.d));
                        console.log("ID is " + JSON.stringify(data.d));
                    },
                    error: function (error) {
                        console.log("failure is " + JSON.stringify(error));
                    }
                });//end of ajax function
        }
    </script>

    <input id="Button1" type="button" onclick="setPeoplesColumn()" value="button" />

推荐阅读