0

我正在使用 Sharepoint Rest 服务来更新列表项。为了进行更新,我使用了 SP.RequestExecutor 对象中的 executeAsync 函数。代码工作正常,但是当我今天测试它时,我意识到 ListItems 没有更新并且 executeAsync 函数工作正常(转到成功函数并且没有错误)。

function ActualizarDatosListaConItemType(urlSitio, nomlista, id, metadata, funcionExito, funcionError,     itemType, esAsync) {
// Prepping our update
var item = $.extend({ "__metadata": { "type": itemType } }, metadata);
var executor = new SP.RequestExecutor(urlSitio);
executor.executeAsync({
                        url: urlSitio + "/_api/web/lists/getbytitle('" + nomlista + "')/items('" + id + "')",
                        type: "POST",
                        contentType: "application/json;odata=verbose",
                        data: JSON.stringify(item),                           
                        headers: {
                                  "Accept": "application/json;odata=verbose",
                                  "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                                  "X-HTTP-Method": "MERGE",
                                  "If-Match": "*"
                                  },
  success: function (data) { funcionExito(data); },
  error: function (data) { funcionError(data); }
 });
}

我认为我的代码很好,请帮助T_T。

4

1 回答 1

4

几天来我一直在纠结这个问题,我的发现是 SP.RequestExecutor 的参数名称与普通的“直接”ajax 查询略有不同。

例如,而不是

type: "POST"

利用

method: "POST"

并且要发布实际的数据包,而不是

data: JSON.stringify(item)

利用

body: JSON.stringify(item)

最后,虽然 GetByTitle 嵌入式函数在括号内使用引号作为标题参数,但项目没有。所以而不是

.../项目('123')

利用

.../项目(123)

为了完整起见,这里是我用来通过带有 SP.RequestExecutor 对象的域中的 javascript 通过 rest 更新的块:

    new SP.RequestExecutor(closureThis.appweburl).executeAsync(
        {
            url: closureThis.appweburl + "/_api/SP.AppContextSite(@target)/web/lists(guid\'" + listIdGuid + "\')/items(" + itemId + ")?@target='" + closureThis.hostweburl + "'",
            method: "POST",
            headers: {
                "accept": "application/json;odata=verbose",
                "content-type": "application/json;odata=verbose",
                "X-RequestDigest": closureThis.getDigestValue(),
                "X-HTTP-Method": "MERGE",
                "If-Match": "*"
            },
            body: updateBlock,
            success: function (data) { closureThis.updateDataObjectCallback(data); },
            error: spRequestorErrorHandler
        }
    );

其中closureThis 是我用来存储SharePoint 变量和处理回调的对象 其中updateBlock 是JSON.stringify(data) 值

我的 updateBlock 值如下所示:

"{\"__metadata\":{\"type\":\"SP.Data.TasksListItem\"},\"Title\":\"第一个任务\"}"

于 2013-07-17T10:24:20.293 回答