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を使用して残りを介して更新するために使用したブロックを次に示します。

    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\"},\"タイトル\":\"最初のタスク\"}"

于 2013-07-17T10:24:20.293 に答える