Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何使用REST更新SharePoint列表中的图像url字段_Jquery_Rest_Sharepoint - Fatal编程技术网

Jquery 如何使用REST更新SharePoint列表中的图像url字段

Jquery 如何使用REST更新SharePoint列表中的图像url字段,jquery,rest,sharepoint,Jquery,Rest,Sharepoint,我有一个SharePoint列表(我们称之为“Employee”),我使用jQuery和REST读取和写入该列表上的属性 如果我想更新一个int属性(我们称之为“EmployeeAge”),它非常简单: jQuery.ajax({ url: myUrl, type: "POST", data: JSON.stringify({ '__metadata': { 'type': 'SP.Data.EmployeeListItem' }, 'Emplo

我有一个SharePoint列表(我们称之为“Employee”),我使用jQuery和REST读取和写入该列表上的属性

如果我想更新一个int属性(我们称之为“EmployeeAge”),它非常简单:

jQuery.ajax({
        url: myUrl,
        type: "POST",
        data:  JSON.stringify({ '__metadata': { 'type': 'SP.Data.EmployeeListItem' }, 'EmployeeAge': age }),
        headers: { 
            "accept": "application/json;odata=verbose",
            "content-type": "application/json;odata=verbose",
            "content-length": 0,
            "X-HTTP-Method": "MERGE",
            "X-RequestDigest": $("#__REQUESTDIGEST").val(),
            "IF-MATCH": "*"

        },

        success: successHandlerUpdateEmployeeAge,
        error: errorHandlerUpdateEmployeeAge
        });
现在我想用同样的原理来更新列表的另一列。让我们称之为“员工形象”。列的类型为Hyperlink/Picture和子类型Picture。我想为特定列表项设置列的image url属性

如何格式化ajax调用中的数据属性以支持这种类型的更新


我可以找到上千个关于如何更新标题字段的示例,但没有一个是关于这样复杂类型的更新。

在谷歌搜索了更正列名问题后得到的错误消息后,我找到了答案。事实证明这很简单:

为了更新这样的复杂类型,您需要将其作为javascript对象提供,而不是:

'EmployeeImage': 'http://myurl'
使用此符号提供对象结构:

'EmployeeImage': {Url: 'http://myurl', Description: 'This is the description'}

看看这篇为我指明了正确方向的文章:[

您是否尝试只发送图像的url?或者您还需要描述?是的,当然,我收到了一个“错误请求”错误。但实际上您的评论让我仔细检查了一下,在用Fiddler检查了请求后,我注意到一条我以前没有看到过的更详细的错误消息:“属性”EmployeeImage类型SP.Data.EmployeeListItem上不存在。这使我认为属性名称是从url/描述结构中生成的,因此它应该类似于“EmployeeImage.url”或类似的名称,而不是“EmployeeImage”或类似的名称,但我不知道正确的名称。当列表中根本不存在字段时,我出现了此错误。但情况可能并非如此。请尝试使用UI填写此列,然后使用rest返回其值,以查看其格式。您是对的,我犯了一个愚蠢的错误。我实际上在前面重命名了该列(例如,从“EmpImage”重命名为“EmployeeImage”)后来忘记了,所以我尝试使用标题而不是原始名称引用该列。在将查询更改为使用正确的名称后,我遇到了另一个更相关的错误:从JSON读取器读取时发现了意外的“PrimitiveValue”节点。应为“StartObject”节点。这进一步加强了我的怀疑n我需要在查询中处理列结构。当检查对同一列表的GET请求的结果时,我可以在结果中看到EmployeeImage属性,它包含两个子属性“Description”和“Url”。但是如何更新它们?