1

ホスト サイトに含まれるリストにレコードを挿入する次のコードを記述しました。

var projectItems = [
    { Title: "SharePoint", ProjectDescription: "SharePoint 2013", ProjectManager: "Test0" },
    { Title: "Lync", ProjectDescription: "Lync 2013", ProjectManager: "Test1" },
    { Title: "Exchange", ProjectDescription: "Exchange 2013", ProjectManager: "Test2" }
];

function insertListItems(items) {
    for (var item in items) {

        var inputData = new Object();
        var type = new Object();
        type.type = getListItemType(listName);
        inputData.__metadata = type;
        for (var prop in items[item]) {
            inputData[prop] = items[item][prop];
        }

        console.log(JSON.stringify(inputData));
        console.log(url);

        var obj = {
            url: url,
            type: "POST",
            contentType: "application/json; odata=verbose",
            data: JSON.stringify(inputData),
            headers: { "Accept": "application/json; odata=verbose", "X-RequestDigest": $("#__REQUESTDIGEST").val() },
            success: function (successData) { console.log("insert successful"); },
            error: function (errorData) { console.log("insert failed") }
        };

        if (parent) {
            var exec = new SP.RequestExecutor(appWebUrl);
            exec.executeAsync(obj);

        } else {
            $.ajax(obj);
        }            
    }
}

insertListItems(projectItems);

実行すると印刷されます

{"__metadata":{"type":"SP.Data.ProjectsListItem"},"Title":"SharePoint","ProjectDescription":"SharePoint 2013","ProjectManager":"Test0"}

http://app-e9f4c136adfd88.abhiapps.com/SPAppHelper/_api/SP.AppContextSite(@target)/web/lists/getbytitle ('プロジェクト')/items?@target=' http://dev.abhi.com '

{"__metadata":{"type":"SP.Data.ProjectsListItem"},"Title":"Lync","ProjectDescription":"Lync 2013","ProjectManager":"Test1"}

http://app-e9f4c136adfd88.abhiapps.com/SPAppHelper/_api/SP.AppContextSite(@target)/web/lists/getbytitle ('プロジェクト')/items?@target=' http://dev.abhi.com '

{"__metadata":{"type":"SP.Data.ProjectsListItem"},"Title":"Exchange","ProjectDescription":"Exchange 2013","ProjectManager":"Test2"}

http://app-e9f4c136adfd88.abhiapps.com/SPAppHelper/_api/SP.AppContextSite(@target)/web/lists/getbytitle ('プロジェクト')/items?@target=' http://dev.abhi.com '

挿入成功 挿入成功 挿入成功

このソースコードには複数の問題があります

  1. 実際にはレコードは挿入されません。しかし、エラーはスローされません。

  2. メイン メソッドで確実に行うにはどうすればよいですか... insertListItems メソッドの後に続くコードは、3 つのレコードすべてが正常に挿入された場合にのみ実行されます。現在、javascript の非同期の性質により、何かが挿入される前であってもフローは前進します。

  3. オプション 2 でググったところ、jquery にはプロミスと遅延オブジェクト パターンがあることがわかりましたが、SP.RequestExecutor.executeAsync はそれに従っておらず、「完了」メソッドでそのようなメソッドがサポートされていないことを示すエラーをスローしているようです。

これが私のリストの外観です

ここに画像の説明を入力

4

1 に答える 1