In this article, I would like to show you utilizing SharePoint REST API and JQuery to Create, Retrieve, Update and Delete SharePoint list item.
Pre-Requisite
- Reference to latest jquery.min.js
- For this example purposes, create custom List called “MyList” with default “Title” column.
Create
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| // occurs when a user clicks the create button function CreateNew() { var listName = "MyList" ; var newItemTitle = "New Title Item" ; CreateListItemWithDetails(listName, _spPageContextInfo.webAbsoluteUrl, newItemTitle, function () { alert( "New Item has been created successfully." ); }, function () { alert( "Ooops, an error occured. Please try again." ); }); } // CREATE Operation // listName: The name of the list you want to get items from // weburl: The url of the web that the list is in. // newItemTitle: New Item title. // success: The function to execute if the call is sucesfull // failure: The function to execute if the call fails function CreateListItemWithDetails(listName, webUrl, newItemTitle, success, failure) { var itemType = GetItemTypeForListName(listName); var item = { "__metadata" : { "type" : itemType }, "Title" : newItemTitle }; $.ajax({ url: _spPageContextInfo.siteAbsoluteUrl + "/_api/web/lists/getbytitle('" + listName + "')/items" , type: "POST" , contentType: "application/json;odata=verbose" , data: JSON.stringify(item), headers: { "Accept" : "application/json;odata=verbose" , "X-RequestDigest" : $( "#__REQUESTDIGEST" ).val() }, success: function (data) { success(data); }, error: function (data) { failure(data); } }); } // Get List Item Type metadata function GetItemTypeForListName(name) { return "SP.Data." + name.charAt(0).toUpperCase() + name.split( " " ).join( "" ).slice(1) + "ListItem" ; } |
Retrieve Item
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| // READ SPECIFIC ITEM operation // itemId: The id of the item to get // listName: The name of the list you want to get items from // siteurl: The url of the site that the list is in. // success: The function to execute if the call is sucesfull // failure: The function to execute if the call fails function getListItemWithId(itemId, listName, siteurl, success, failure) { var url = siteurl + "/_api/web/lists/getbytitle('" + listName + "')/items?$filter=Id eq " + itemId; $.ajax({ url: url, method: "GET" , headers: { "Accept" : "application/json; odata=verbose" }, success: function (data) { if (data.d.results.length == 1) { success(data.d.results[0]); } else { failure( "Multiple results obtained for the specified Id value" ); } }, error: function (data) { failure(data); } }); } |
Retrieve All Items
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| // occurs when a user clicks the read button function Read() { var listName = "MyList" ; var url = _spPageContextInfo.webAbsoluteUrl; getListItems(listName, url, function (data) { var items = data.d.results; // Add all the new items for ( var i = 0; i < items.length; i++) { alert(items[i].Title + ":" + items[i].Id); } }, function (data) { alert( "Ooops, an error occured. Please try again" ); }); } // READ operation // listName: The name of the list you want to get items from // siteurl: The url of the site that the list is in. // success: The function to execute if the call is sucesfull // failure: The function to execute if the call fails function getListItems(listName, siteurl, success, failure) { $.ajax({ url: siteurl + "/_api/web/lists/getbytitle('" + listName + "')/items" , method: "GET" , headers: { "Accept" : "application/json; odata=verbose" }, success: function (data) { success(data); }, error: function (data) { failure(data); } }); } |
Update
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| // occurs when a user clicks the update button function Update() { var listName = "MyList" ; var url = _spPageContextInfo.webAbsoluteUrl; var itemId = "1" ; // Update Item Id here var title = "New Updated Title" ; updateListItem(itemId, listName, url, title, function () { alert( "Item updated, refreshing avilable items" ); }, function () { alert( "Ooops, an error occured. Please try again" ); }); } // Update Operation // listName: The name of the list you want to get items from // siteurl: The url of the site that the list is in. // title: The value of the title field for the new item // itemId: the id of the item to update // success: The function to execute if the call is sucesfull // failure: The function to execute if the call fails function updateListItem(itemId, listName, siteUrl, title, success, failure) { var itemType = GetItemTypeForListName(listName); var item = { "__metadata" : { "type" : itemType }, "Title" : title }; getListItemWithId(itemId, listName, siteUrl, function (data) { $.ajax({ url: data.__metadata.uri, 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" : data.__metadata.etag }, success: function (data) { success(data); }, error: function (data) { failure(data); } }); }, function (data) { failure(data); }); } |
Delete
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| // occurs when a user clicks the delete button function Delete() { var listName = "MyList" ; var url = _spPageContextInfo.webAbsoluteUrl; var itemId = "1" ; // Update Item ID here deleteListItem(itemId, listName, url, function () { alert( "Item deleted successfully" ); }, function () { alert( "Ooops, an error occured. Please try again" ); }); } // Delete Operation // itemId: the id of the item to delete // listName: The name of the list you want to delete the item from // siteurl: The url of the site that the list is in. // success: The function to execute if the call is sucesfull // failure: The function to execute if the call fails function deleteListItem(itemId, listName, siteUrl, success, failure) { getListItemWithId(itemId, listName, siteUrl, function (data) { $.ajax({ url: data.__metadata.uri, type: "POST" , headers: { "Accept" : "application/json;odata=verbose" , "X-Http-Method" : "DELETE" , "X-RequestDigest" : $( "#__REQUESTDIGEST" ).val(), "If-Match" : data.__metadata.etag }, success: function (data) { success(data); }, error: function (data) { failure(data); } }); }, function (data) { failure(data); }); } |
Reference
- http://msdn.microsoft.com/en-us/library/office/dn292552.aspx
- http://msdn.microsoft.com/en-us/library/fp142385.aspx
- http://blogs.msdn.com/b/uksharepoint/archive/2013/02/22/manipulating-list-items-in-sharepoint-hosted-apps-using-the-rest-api.aspx
- http://www.plusconsulting.com/blog/2013/05/crud-on-list-items-using-rest-services-jquery/
No comments:
Post a Comment