2015-04-14 22 views
-1

這裏是什麼,我要使用:Javascript與SharePoint 2013 REST端點「INSERT」到列表中?

  • 的SharePoint 2013
  • 的Javascript
  • REST端點
  • SharePoint列表(稱: 「公告」)
  • 網頁(稱爲:「example.com」)

個參考文獻:

很簡單:

  • 我怎麼名單裏面插入一個新的項目(行)嗎?

我想:

$.ajax({ 
    url: "https://example.com/_api/web/lists/getbytitle('Announcements')/items", 
    type: "POST", 
    contentType: "application/json;odata=verbose", 
    data: JSON.stringify({ '__metadata': { 'type': 'SP.Data.AnnouncementListItem' }, "Title": "New Announcement!" }), 
    headers: { 
     "Accept": "application/json;odata=verbose", 
     "Authorization": "Bearer " + accessToken 
     "X-RequestDigest": form digest value, 
     "IF-MATCH": etag, 
    }, 
    success: function (data) { 
     console.log(data); 
    }, 
    error: function (data) { 
     console.log(data); 
    } 
}); 

然後,我知道有很多不如意的事情特別是在headers部分。但是,這是什麼意思:

  • Authorization
  • accessToken
  • X-RequestDigest
  • IF-MATCH

..然後如何得到這些值(使用JavaScript)?因此:

  • 那裏總是有確切的必填字段?
  • 以及如何/從哪裏獲取這些值?

我仍然無法找到正確這樣Update/Insert一個簡單而完整的例子。

+0

可能的重複[如何可以在Sharepoint 2013中獲得oauth訪問令牌?](http://stackoverflow.com/questions/11804624/how-can-i-get-an- oauth-access-token-in-sharepoint-2013) – Luizgrs

回答

1

所以有兩種方法可以用來將項目提交給列表,jQuery庫SPServices和REST API。 SPServices的文檔記錄很好here。使用REST API的速度更快,也更簡單!

function createListItem(itemProperties, success, failure) { 
    $.ajax({ 
    url: "https://example.com/_vti_bin/listdata.svc/Announcements", 
    type: "POST", 
    processData: false, 
    contentType: "application/json;odata=verbose", 
    data: JSON.stringify(itemProperties), 
    headers: { 
     "Accept": "application/json;odata=verbose" 
    }, 
    success: function(data) { 
     success(data.d); 
    }, 
    error: function(data) { 
     // failure(data.responseJSON.error); 
     alert("error"); 
    } 
    }); 
} 

我上面做的第一件事情就是創建,每當你想創建一個新的列表項,你可以調用一個函數。參數itemProperties可以填入你需要的字段,見下文。

var Title = "Title"; 
var Answer = "Answer"; 
var userid = _spPageContextInfo.userId; 

var taskProperties = { 
    'Title': Title, 
    'Answer': Answer, 
    'UserId': userid 
}; 

那麼我們要做的就是打電話與我們剛剛宣佈了新的變量此功能。

createListItem(taskProperties, function(task) { 
    alert("Thank you for your input!"); 

    }, 
    function(error) { 
    console.log(JSON.stringify(error)); 
    } 
); 
+0

嗨月亮,非常感謝你。我是否還需要將'('X-RequestDigest':$(「#__ REQUESTDIGEST」).val()'放入'headers:'部分? Bcos它仍然沒有得到保存。並且'url:'可以像'「https://example.com/_api/web/lists/getbytitle('Announcements')/items」'? –

+0

但也沒有顯示錯誤。取而代之。但沒有真正保存。 –

+0

@夏期劇場我沒有使用「X-RequestDigest」,所以儘量不要先看看它是否有效。如果您使用的是SharePoint託管的應用程序,那麼您可以嘗試執行「X-RequestDigest」:$(「#__ REQUESTDIGEST」).val()'。至於網址,我認爲你可以從你使用的網址中刪除/這些項目。 '「https://example.com/_api/web/lists/getbytitle('Announcements')」' – moon

1

您已經張貼在前面稱道事實上的jsfiddle不休息。您只需使用SharePoint客戶端對象模型。找到下面的REST API模型,我希望它會工作

var cat = { 
    "__metadata": { "type": ItemType }, 
    "Title": "GenIT-Issue", 
} 
$.ajax({ 
    url: _spPageContextInfo.siteAbsoluteUrl + "/_api/web/lists/getbytitle('Tickets')/items", 
    type: "POST", 
    contentType: "application/json;odata=verbose", 
    data: JSON.stringify(cat), 
    headers: { 
     "Accept": "application/json;odata=verbose", 
     "X-RequestDigest": $("#__REQUESTDIGEST").val() 
    }, 
    success: function (data) { 

    }, 
    error: function (data) { 
    } 
}); 

我在我的SharePoint頁面內運行此代碼,因此不需要驗證。它將運行在當前用戶權限

相關問題