【问题标题】:Posting to a lookup field发布到查找字段
【发布时间】:2018-08-21 22:48:49
【问题描述】:

我正在尝试将新项目发布/创建(不更新)到查找字段。我之前关注过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 对象部分。当我查看自己提供的文档时并没有注意。

【问题讨论】:

    标签: javascript jquery rest lookup sharepoint-online


    【解决方案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监听请求的raw header来识别header值。

    【讨论】:

    • 谢谢先生!!我在你的帮助下解决了。我用解决方案更新了我的问题。我觉得提琴手有点压倒性。再说一次,我还没有下定决心正确地学习它。但也许是时候了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2018-12-08
    • 2014-01-04
    • 1970-01-01
    • 2022-11-26
    相关资源
    最近更新 更多