2015-05-02 2 views
2

Я пытаюсь обновить пользовательские свойства документа для файлов в SharePoint 2013 с помощью REST и JavaScriptSharePoint 2013 Пользовательские свойства файла обновления с помощью остальное

function uploadFileProp() 
{ 
      $.ajax({ 
       url: "https://sp/sites/xxxx/_api/web/getFileByServerRelativeUrl('/sites/xxxx/ta/cs_architecture_3_0.png')/ListItemAllFields", 
       type: "POST", 
       data: "{ '__metadata': { 'type': 'SP.ListItem' }, 'OperatingGroup': 'New' }", 
       headers: { 
        "accept": "application/json;odata=verbose", 
        "X-RequestDigest": $("#__REQUESTDIGEST").val(), 
        "X-HTTP-Method":"Merge" 
       }, 
       complete: function (data) { 
        alert('succes'); 
       }, 
       error: function (err) { 
        alert('failed'); 
       } 
     }); 
} 

Но это не обновление моего пользовательского свойства.

Ответ:

{ "Ошибка": { "код": "- 1, Microsoft.SharePoint.Client.InvalidClientQueryException", "сообщение": { "языки": "EN-US" , "значение": "Недопустимый запрос."}}}

ответ

1

Эта ошибка возникает, так как недействительное значение заголовка указывается для X-HTTP-Method:

синтаксис X-HTTP-метода определяется следующим образом:

XHTTPMethod = "X-HTTP-Method: " 
       ("PUT" 
       /"MERGE" 
       /"PATCH" 
       /"DELETE") 
       CRLF 

Заменить "X-HTTP-Method":"Merge" с "X-HTTP-Method":"MERGE".

К сожалению, это не единственная проблема указанного примера:

  • If-Match заголовка является обязательным для операции обновления
  • скорее всего, имя типа сущности неверно (SP.ListItem), так как вы обновляете пункт списка a Библиотека

Ниже приводится демонстрация ред как обновить свойства файла,

Примечание: вы не должны указывать имя типа объекта в явном виде, так как он автоматически определяется

function updateFileProperties(webUrl,fileUrl,properties) 
{ 
    var endpointUrl = webUrl + "/_api/web/getFileByServerRelativeUrl('" + fileUrl + "')/ListItemAllFields"; 
    return executeJson(endpointUrl).then(function(data){ 
     var updateHeaders = { 
      'X-HTTP-Method' : 'MERGE', 
      'If-Match': data.d['__metadata']['etag'] 
     }; 
     var itemPayload = properties; 
     itemPayload['__metadata'] = {'type': data.d['__metadata']['type']}; 
     return executeJson(endpointUrl,'POST',updateHeaders,itemPayload);  
    }); 
} 

function executeJson(url,method,headers,payload) 
{ 
    method = method || 'GET'; 
    headers = headers || {}; 
    headers["Accept"] = "application/json;odata=verbose"; 
    if(method == "POST") { 
     headers["X-RequestDigest"] = $("#__REQUESTDIGEST").val(); 
    }  
    var ajaxOptions = 
    {  
     url: url, 
     type: method, 
     contentType: "application/json;odata=verbose", 
     headers: headers 
    }; 
    if (typeof payload != 'undefined') { 
     ajaxOptions.data = JSON.stringify(payload); 
    } 
    return $.ajax(ajaxOptions); 
} 

Usage

Обновление Title недвижимость файла, расположенного под Documents библиотека:

var webUrl = 'https://contoso.sharepoint.com'; 
var fileUrl = '/Documents/SharePoint User Guide.docx'; 
var properties = { 
    'Title': 'New title', 
}; 

updateFileProperties(webUrl,fileUrl,properties) 
    .done(function(){ 
     console.log('File has been updated');  
    }) 
    .fail(function(error){ 
     console.log(JSON.stringify(error)); 
    }); 
Смежные вопросы