发布到查找字段

时间:2018-03-13 15:40:46

标签: javascript jquery rest lookup sharepoint-online

我正在尝试将新项目发布/创建(不更新)到LookUp字段。我之前跟随exampleexample并成功了。但由于某种原因,我现在无法进行简单的Post调用。我需要额外的一双眼睛来看看我的代码。

查找字段internalName是“questionRelation”。我现在必须在名称后添加Id,以在Lookup字段所代表的列表中指定Id列。

var data = {
                __metadata: { "type": window._cache.ListItemType },
                Title: user_answer,
                questionRelationId: {
                    'results': parseInt(question_Id)
                }
            };
        var _answers = "answers";
        var _url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + _answers + "')/Items"
        var _type = "POST";
        var _headers = {
            "accept": "application/json;odata=verbose",
            "X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
            "content-Type": "application/json;odata=verbose"
        }
        var _data = JSON.stringify(data);
        jQuery.ajax({

            url: _url,
            type: _type,
            headers: _headers,
            data: _data,
            done: function (data, textStatus, jHXR) {},
            error: function (data, textStatus, jHXR) {});

我得到的错误是:

  

从JSON阅读器读取时发现了一个意外的'StartObject'节点。预计会有'PrimitiveValue'节点。

我已将查找字段设置为仅采用一个值(id)。非常感谢投入。

  

更新

我改变了:

   questionRelationId: {
                'results': parseInt(question_Id)
            }

为:

 questionRelationId: parseInt(question_Id)

我工作了。他们这样做的方式是查找列采用数组。如果是单个值,则必须删除results对象部分。当我查看我自己提供的文档时,我没有注意。

1 个答案:

答案 0 :(得分:1)

以下代码适用于我当地。

<script type="text/javascript">
        var itemProperties = {
            "__metadata": { "type": "SP.Data.ChildListItem" },
            "Title": "RestApiCreated",
            "LookupParentId":1
        };

        function createListItem() {

            $.ajax({
                url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('child')/items",
                type: "POST",
                contentType: "application/json;odata=verbose",
                data: JSON.stringify(itemProperties),
                headers: {
                    "Accept": "application/json;odata=verbose",
                    "Content-Type": "application/json;odata=verbose",
                    "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                    "X-HTTP-Method": "POST"
                },
                success: function (data, textStatus, jqXHR) {
                    alert(data.d.length);
                },

                error: function (jqXHR, textStatus, errorThrown) {
                    alert(jqXHR);
                }
            });
        }
    </script>

并尝试使用fiddler监视请求原始标头以识别标头值。

enter image description here